9

我已经搜索了谷歌和这里的答案一段时间,得出的结论是,在写入注册表时,HKEY_CURRENT_USER 应该在没有 UAC 的情况下可用,对吗?无论如何,这就是每个线程似乎都在陈述的内容。我的问题是在尝试访问此密钥并写入新值时出现访问被拒绝错误。这是因为我的注册表有问题还是我做错了什么?这是我正在使用的代码:

string runKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
RegistryKey startupKey = Registry.CurrentUser.OpenSubKey(runKey, true);
startupKey.SetValue("Arebokerts application", '"' + Environment.CurrentDirectory +     "\\arebokert.exe" + '"', Microsoft.Win32.RegistryValueKind.String);

有人能这么好心,对这个问题有所了解吗?我想远离任何类型的 UAC 提示,并且能够在没有 UAC 权限的情况下运行它。此代码引发“UnauthorizedAccessException”。怎么了?

最好的问候,arebokert

编辑

正如评论中的大卫和汉斯指出的那样,这个问题是由于某些东西阻止我更改密钥。我发现它是 comodo 杀毒软件,所以我把它关掉了。这使应用程序正常运行。感谢您的所有回复!

4

1 回答 1

11

您的代码很好,标准用户默认可以写入HKCU. 问题是系统拒绝您对注册表的该部分进行写访问。最可能的解释是:

  1. 您运行此代码的机器已保护特定密钥以限制写访问。从 regedit 检查是否是这种情况。导航到密钥,右键单击树视图中的密钥并选择权限。选择您的用户名并查看您拥有的权限。您应该为完全控制和读取都选中了允许。

  2. 您正在运行的防病毒或反恶意软件产品阻止了对该密钥的写访问。由于此密钥被恶意软件广泛使用,反恶意软件产品反击的情况并不少见。您可以通过暂时禁用所有防病毒或反恶意软件产品来诊断这是否是原因。

于 2013-10-01T14:45:28.237 回答