我正在尝试在以下位置创建注册表项,但出现拒绝访问错误:
HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\MyProgram
这是代码:
RegistryKey reg;
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany\MyProgram");
我正在尝试在以下位置创建注册表项,但出现拒绝访问错误:
HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\MyProgram
这是代码:
RegistryKey reg;
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany\MyProgram");
您最有可能使用用户帐户控制 (UAC)。这意味着即使您是管理员,您的访问令牌也没有必要的权限来执行诸如在HKEY_LOCAL_MACHINE
.
但是,通过 UAC 提示,您可以提升您的权限。
Regedit 包含一个UAC 清单,它将在执行之前引发提示,以确保它可以执行它需要能够执行的操作。您还可以右键单击可执行文件或快捷方式,然后选择Run as administrator。
所以基本上你有三个选择:
第一个解决方案不太安全,最后一个解决方案是最优雅的(但实际上也需要一些努力)。
您需要在具有足够权限的帐户下运行您的应用程序,以便在指定位置写入注册表。通常HKEY_LOCAL_MACHINE
分支是为高级用户保留的,因为它包含机器全局设置。
我尝试了以下语法:
SETX /S [Machine Name] [Variable] [Value] /M
我不知道为什么,但在 Windows 7 中,如果您指定要在其上添加系统变量的机器名称,即使对于本地机器也是如此。