我已经在谷歌和此处搜索了一段时间的答案,得出的结论是,在写入注册表时,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
编辑
正如 David 和 Hans 在评论中指出的那样,这个问题是由于某些东西阻止了我更改 key 。我发现它是 comodo 防病毒软件,所以我将其关闭。这使应用程序正常运行。感谢您的所有回复!
最佳答案
您的代码很好,标准用户默认情况下可以写入 HKCU
。问题是系统拒绝您对注册表的那部分进行写访问。最可能的解释是:
您运行此代码的机器已保护该特定 key 以限制写入访问。从 regedit 检查是否属于这种情况。导航到 key ,右键单击 TreeView 中的 key 并选择权限。选择您的用户名并查看您拥有的权限。您应该为完全控制和读取都选中允许。
您正在运行的防病毒或反恶意软件产品正在阻止对该 key 的写访问。由于此 key 被恶意软件广泛使用,反恶意软件产品反击的情况并不少见。您可以通过暂时禁用所有防病毒或反恶意软件产品来诊断这是否是原因。
关于c# - 无法在 C# 中写入 HKEY_CURRENT_USER 注册表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19118768/