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

时间:2009-05-01 23:25:19

标签: c# windows-vista registry key unauthorized

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设置注册表项?

2 个答案:

答案 0 :(得分:1)

我见过pages说使用CreateKey而不是OpenKey - 这会有所作为吗?

您可能需要以提升的权限运行。这可能会example提供帮助。

请参阅此处了解another展位权利示例。

答案 1 :(得分:1)

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

Vista上的一个程序可能会通过管理员权限创建该密钥,并禁止您在正常情况下写入密钥。你能尝试传递假(意思是只读),看看是否允许你打开它?如果是这样,你应该查看密钥的实际权限,看看它们是什么。