c# - 无法在 C# 中写入 HKEY_CURRENT_USER 注册表项

标签 c# .net registry

我已经在谷歌和此处搜索了一段时间的答案,得出的结论是,在写入注册表时,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。问题是系统拒绝您对注册表的那部分进行写访问。最可能的解释是:

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

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

关于c# - 无法在 C# 中写入 HKEY_CURRENT_USER 注册表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19118768/

相关文章:

winapi - 在 HKEY_CURRENT_USER 中注册代理/ stub

c# - MVC 中的 GoogleWebAuthorizationBroker For Google Drive Access

C# List<List<string>> 使用 LinQ 进行过滤

c# - 使用查询字符串参数消除 UriTemplate 匹配项的歧义

c# - Java 中的异步回调相当于什么?

c# - 如何在 C# 中截断文件?

c# - 如何获取 NHibernate 中的连接标准计数

c# - 使用 Entity Framework 6 和 C# 调用现有存储过程

c# - 以编程方式清除 Microsoft IME 输入历史记录

java - 如何在 jTree 中显示 Windows 注册表?