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

これはUACの問題ではありません。問題のキーは、通常UACによって保護されていないHKCUにあります。UACは通常、HKLMなどのキーへのアクセスを削除します。

Vistaのプログラムがやって来て、管理者権限でそのキーを作成し、通常の状況ではキーへの書き込みを禁止している可能性があります。false(読み取り専用を意味します)を渡してみて、それで開くことができるかどうかを確認できますか?もしそうなら、あなたは鍵の実際の許可を見て、それらが何であるかを見る必要があります。

于 2009-05-02T02:18:02.613 に答える
1

OpenKey ではなく CreateKey を使用すると書かれているページを見たことがありますが、違いはありますか?

昇格された権限として実行する必要がある場合があります。これは参考になるかもしれませ

参照権の別の例については、こちらを参照してください。

于 2009-05-01T23:26:37.283 に答える