-1

Windows 7 x64 レジストリを変更しようとしています。32 ビット システムのレジストリ キーを変更するコードは既にあり、そのうちのいくつかは 64 ビット バージョンでも動作します。ただし、それらの一部はそうではなく、WOW64node と関係があることはわかっていますが、動作させることができません。

既存のコード:

regkey = My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\International", True)       
regkey.SetValue("sDecimal", ",")
regkey.Close()

これは、64ビットではなく、Windows 7 32ビットバドで機能します。だから私は次のことを試しました:

rk1 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64)
rk2 = rk1.OpenSubKey("Control Panel\International", True)
rk2.SetValue("sDecimal", ",")
regkey.Close()

これは機能しません。WOW64node を使用していないことが原因だと思います。ただし、コードで実験すると実行されません。

このコードは 64 ビットで十分に機能します。

regkey = My.Computer.Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows NT\CurrentVersion\Winlogon", True)      
regkey.SetValue("Shell", "C:\mmi_loader.exe", RegistryValueKind.String)
regkey.Close()

私は何を間違っていますか?32 ビットと 64 ビットの両方で動作するようにコードを調整できれば理想的です。

前もって感謝します、

4

1 に答える 1

0

私のwindows10 64ビットPCのこのコードは動作します:

RegistryKey rk1 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
RegistryKey rk2 = rk1.OpenSubKey("Control Panel\\International", true);
rk2.SetValue("sDecimal", ",");
rk1.Close();
rk2.Close();
于 2015-11-05T08:37:07.617 に答える