使用 .NET 在 64 位 windows 7 上编辑注册表

Registry edit on 64bit windows 7 with .NET

我正在尝试更改 windows 7 x64 注册表。我已经有了代码来更改 32 位系统的注册表项,其中一些也适用于 64 位版本。然而,其中一些没有,我知道它与 WOW64node 有关,但我就是无法让它工作。

现有代码:

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

这适用于 windows 7 32 位芽,不适用于 64 位。所以我尝试了以下方法:

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 位上工作的方式进行调整,那将是理想的。

提前致谢,

此代码在我的 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();