创建注册表项时访问被拒绝

本文关键字:拒绝 访问 注册表 创建 | 更新日期: 2023-09-27 18:31:01

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

HKEY_LOCAL_MACHINE''软件''我的公司''我的程序

这是代码:

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

创建注册表项时访问被拒绝

您最有可能使用的是用户帐户控制 (UAC)。这意味着即使您是管理员,您的访问令牌也没有必要的权限来执行诸如在HKEY_LOCAL_MACHINE中创建注册表项之类的操作。

但是,通过 UAC 提示,您可以提升您的权限。

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

所以基本上你有三个选择:

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

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

您需要在具有足够权限以写入指定位置的注册表的帐户下运行应用程序。通常,HKEY_LOCAL_MACHINE分支是为高级用户保留的,因为它包含计算机全局设置。

我尝试了以下语法:

SETX /S [Machine Name] [Variable] [Value] /M

我不确定为什么,但在 Windows 7 中,如果您指定要添加系统变量的计算机名称,即使对于本地计算机,它也可以工作。