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

4

2 回答 2

1

我看到页面说使用 CreateKey 而不是 OpenKey - 这有什么不同吗?

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

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

于 2009-05-01T23:26:37.283 回答
1

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

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

于 2009-05-02T02:18:02.613 回答