繁体   English   中英

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

[英]Can't write to HKEY_CURRENT_USER registrykey in C#

我已经搜索了google和这里的答案一段时间了,得出的结论是,在写入注册表时,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在评论中指出的那样,此问题是由于某些原因阻止了我更改密钥。 我发现它是comodo防病毒软件,因此我将其关闭。 这使应用程序正常运行。 感谢您的所有回复!

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

  1. 运行此代码的计算机已保护该特定密钥,以限制写访问权限。 检查regedit是否属于这种情况。 导航到该键,在树视图中右键单击该键,然后选择“权限”。 选择您的用户名,然后查看您拥有什么权限。 您应该同时选中“完全控制”和“允许”。

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

暂无
暂无

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

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