繁体   English   中英

如何使用C#在Windows Vista中设置注册表值?

[英]How do I set a registry value in Windows Vista using C#?

try
{
    RegistryKey rkApp = Registry.CurrentUser.OpenSubKey(
         "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

    if (rkApp.GetValue("AdobeBitmapViewer") == null)
    {
        rkApp.SetValue("AdobeBitmapViewer", Application.ExecutablePath.ToString());
    }
    rkApp.Close();
}
catch (Exception) { }

该代码在Windows XP中有效,但是在Windows Vista中,我收到UnauthorizedException。 有什么方法可以绕过Vista中的UAC来设置注册表项?

我见过一些页面说使用CreateKey而不是OpenKey-会有所作为吗?

您可能需要以提升的权限运行。 这可能例如帮助。

请参阅此处以获取权利的另一个示例。

这不应该是UAC问题。 有问题的密钥是在HKCU中,它通常不受UAC保护。 UAC通常会删除您对HKLM等密钥的访问。

Vista上的某个程序可能会通过Admin特权来创建该密钥,并禁止您在正常情况下写入密钥。 您可以尝试传递false(意味着只读)并查看是否可以打开它吗? 如果是这样,您应该查看密钥的实际权限,并查看它们是什么。

暂无
暂无

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

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