3

SOFTWARE\Wow6432Node\Program\SubProgramWindows 7 で C# コードを使用してレジストリ パスのデータを変更したいのですが、値を読み取ることはできますが、 Registry に書き込むことはできません。コードは次のとおりです。

RegistryKey SUBKEY;
RegistryKey TAWKAY = RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "");
string subkey = "SOFTWARE\\Wow6432Node\\Program\\SubProgram ";
if (TAWKAY.OpenSubKey(subkey) != null)   // Get values from Registry
{

    TAWKAY = RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "");
    SUBKEY = TAWKAY.OpenSubKey(subkey); // subkey opens
    SUBKEY = TAWKAY.OpenSubKey(subkey,true); // subkey not open shows error Requested registry access is not allowed 
    SUBKEY.SetValue("Some name", "1234567890");
    Console.WriteLine(SUBKEY.GetValue("Some name").ToString());
}
else
{
    Console.WriteLine("Cannot open registry");
}

Console.Read();

を設定OpenSubKey(subkey, true)すると、エラーメッセージが表示されますRequested registry access is not allowed

レジストリに書き込むために必要な権限はありますか? 問題を解決するのを手伝ってください

4

3 に答える 3

6

Wow6432Node は、レジストリ内の実際のパスではありません。これは、64 ビット OS の 32 ビット キーのエイリアスです。

32 ビットで作業することを指定するには、RegistryView.Registry32 を使用する必要があります。

RegistryKey reg32key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey reg_32bit_AppKey = reg32key.OpenSubKey(@"SOFTWARE\Program\SubProgram");
if (reg_32bit_AppKey != null)
{
    // Here you can work with "SOFTWARE\\Wow6432Node\\Program\\SubProgram "
}
于 2013-03-28T10:21:15.323 に答える
0

HKLM でキーを変更/削除/追加するには、管理者権限が必要です。

requestedExecutionLevelその場合、アプリケーションのマニフェスト値を次のように変更する必要があります。requireAdministrator

于 2013-03-28T07:56:06.600 に答える
0

レジストリで操作を実行するには、「Reg」コマンドを使用することをお勧めします。

リモート マシンのレジストリにアクセスする場合でも、そのマシンの資格情報は必要ありませんが、マシン名があれば十分です。

「REG」コマンドの詳細については、次のリンクを参照してください。

http://technet.microsoft.com/en-us/library/cc732643(v=ws.10).aspx

于 2013-03-28T09:11:22.393 に答える