Только что убил 5 часов, отказавшись от этого момента.Команда работает в консоли, а не в коде
Эта команда отлично из командной строки без повышенных работ (разрешения pregranted на ключе, так что никаких вопросов):
REG ADD "HKCR\CLSID\{323CA680-C24D-4099-B94D-446DD2D7249E}\ShellFolder" /v Attributes /d 0xA0900100 /t REG_DWORD /f
Но C# версии не производит никаких изменений в RegKey: (та же машина как указано выше, с разрешениями же RegKey упаковывают кто спрашивает):
System.Diagnostics.Process.Start("CMD", "/C REG ADD \"HKCR\\CLSID\\{323CA680-C24D-4099-B94D-446DD2D7249E}\\ShellFolder\" /v Attributes /d 0xA0900100 /t REG_DWORD /f");
Я пробовал несколько вариантов, ни один из них не работает. 3 других разработчика, с которыми я имею дело, сбиты с толку, команда не работает, и никто не может понять, почему. Есть идеи?
Вы пытались захватить стандартные выходные и стандартные потоки ошибок, чтобы увидеть, записаны ли какие-либо ошибки командой 'reg'? – cdhowie
В чем причина использования процесса запуска вместо использования класса .NET Registry? – Postlagerkarte
Почему у вас есть программа, вызывающая CMD? «REG» - это только% SystemRoot% \ System32 \ reg.exe; он находится в PATH, поэтому вы можете вызывать его прямо из вашего кода на C#. Таким образом, вам не нужно беспокоиться о передаче сложного параметра через параметр CMD/C. (Угадайте, ваша проблема - это один из вариантов экранирования в CMD.) – CBHacking