當32位元應用程式在64位元Windows系統上執行時,它只能存取HKEY_LOCAL_MACHINESoftwareWow6432Node下的登錄項目。但是,在某些情況下,需要存取64位元註冊表。
使用.NET Framework 4.x及更高版本:
.NET Framework 4.x及更高版本提供了RegistryView枚舉,允許直接存取64位元和32位元註冊表項。以下是操作方法:
存取64位元登錄:
<code class="language-csharp">using Microsoft.Win32; RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); // 对64位注册表执行操作</code>
存取32位元登錄:
<code class="language-csharp">RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); // 对32位注册表执行操作</code>
對於需要同時存取64位元和32位元登錄項目的情況,可以使用以下方法:
<code class="language-csharp">// 获取64位和32位节点的所有注册表值 var mergedValues = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).GetValues() .Concat(RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).GetValues()); // 获取64位和32位节点的所有注册表项 var mergedKeys = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).GetSubKeyNames() .Concat(RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).GetSubKeyNames());</code>
以上是32位元應用程式如何存取64位元Windows註冊表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!