我正在尝试在以下位置创建注册表项,但出现访问被拒绝错误:


  HKEY_LOCAL_MACHINE \ SOFTWARE \ MyCompany \ MyProgram


这是代码:

RegistryKey reg;
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany\MyProgram");

最佳答案

您最有可能使用User Account Control (UAC)。这意味着,即使您是管理员,您的访问令牌也没有执行诸如在HKEY_LOCAL_MACHINE中创建注册表项之类的权限。

但是,通过查看UAC提示,您可以提升特权。

Regedit包含一个UAC manifest,它将在执行之前引发提示,以确保它可以执行需要执行的操作。您也可以右键单击可执行文件或快捷方式,然后选择“以管理员身份运行”。

因此,从本质上讲,您有三种选择:


关闭UAC
使用以管理员身份运行
在可执行文件中包含UAC清单


第一个解决方案的安全性较差,最后一个解决方案是最优雅的(但实际上还需要一些努力)。

关于c# - 在C#中创建注册表项时访问被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10151771/

10-13 09:43