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

时间:2015-11-05 08:12:46

标签: .net windows registry windows64

我正在尝试在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。但是,当我在代码中进行实验时,它不会运行。

这段代码在64bit上运行得足够有趣:

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位的方式对代码进行调整,那将是理想的。

提前致谢,

1 个答案:

答案 0 :(得分: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();