繁体   English   中英

创建注册表项时拒绝访问

[英]Access denied when creating registry key

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

HKEY_LOCAL_MACHINE\\SOFTWARE\\MyCompany\\MyProgram

这是代码:

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 中,如果您指定要添加系统变量的机器名称,即使对于本地机器,它也可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM