4

Windows 7 のレジストリから UAC 状態を読み取る次の C# コードがあります。

object obj = Registry.LocalMachine.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA", (long)1);

管理者/管理者以外のアカウントを使用して、Windows 7 で完全に動作します。Windows 8で提供したデフォルト値を常に返します。レジストリキーはそこにあります。その値は regedit で確認できます。しかし、C# コードはそれを読み取りません。誰でも理由がわかりますか?.net 4 アプリケーションです。ユーザー アカウントは昇格されていない管理者です。

4

2 に答える 2

4

デフォルト値を返します (Windows 7 と 8 の両方で)。管理者として実行せずに、Windows 7 と 8 の両方で正しいレジストリ値を読み取るコードを次に示します。

        object obj = Registry.GetValue( 
             @"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\", 
             "EnableLUA", 
             (long)1);

GetValueメソッドを onRegistryではなく on で呼び出しRegistry.LocalMachine、キーと値の名前を 2 つの個別のパラメーターとして渡すことに注意してください。

于 2014-12-05T03:34:43.630 に答える
-1

デフォルトでレジストリにアクセスできるようにするには、少なくとも管理者権限が必要です。Windows 8 の開発者は、そのままにしておく方が安全だと考えている可能性があります。

于 2013-08-25T19:57:55.237 に答える