我有.net解决方案,可以在X86(作为目标平台)中生成内部版本。
我期望下面提到的注册表项应在以下目录下创建
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ FolderName
,但是它将在Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node
下创建条目,这在此处是不希望的。
如果我将.net解决方案更改为X64(构建目标平台),那么它将在“本地计算机\软件”下创建
Microsoft.Win32.RegistryKey subKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE");
if (checkIfKeyExists(subKey))
{
subKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\FolderName");
if (!checkIfKeyExists(subKey))
{
Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\ FolderName ");
Microsoft.Win32.Registry.LocalMachine.SetValue("TestKey", "456788", RegistryValueKind.String);
}
}
答案 0 :(得分:2)
32位应用程序将默认为注册表的32位视图。如果要将密钥访问定向到64位视图,则需要手动打开注册表配置单元,而不要使用Registry
类成员。
using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm.CreateSubKey(@"SOFTWARE\FolderName", writable: true))
{
// do stuff with the key
if (key.GetValue("TestKey") == null)
key.SetValue("TestKey", "456788");
}