從 32 位元 Windows 應用程式存取 64 位元註冊表
挑戰:
32 位元應用程式在 64 位元 Windows 系統上存取 64 位元登錄時遇到困難。當從 64 位元建置伺服器上執行的 32 位元單元測試存取駐留在 64 位元登錄中的系統資訊(例如 SQL Express 實例的路徑)時,經常會出現此問題。
解:
存取 64 位元登錄:
RegistryView.Registry64
屬性提供了從 32 位元應用程式存取 64 位元註冊表的解決方案。 以下程式碼示範了這一點:
<code class="language-csharp">RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); RegistryKey sqlServerKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"); string sqlExpressKeyName = (string)sqlServerKey.GetValue("SQLEXPRESS");</code>
存取 32 位元登錄:
相反,要存取 32 位元註冊表,請使用 RegistryView.Registry32
:
<code class="language-csharp">RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); RegistryKey sqlServerKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"); string sqlExpressKeyName = (string)sqlServerKey32.GetValue("SQLEXPRESS");</code>
重要注意事項:
RegistryView.Registry32
是推薦且更直接的方法。 RegisteredOrganization
值錯誤地傳回「Microsoft」。 64 位元代碼將傳回正確的組織。 GetAllRegValueNames()
函數允許檢索所有鍵名稱和值,無論註冊表視圖(32 位元或 64 位元)為何。 ??
) 優雅地處理潛在的空值。 以上是32位元應用程式如何存取Windows中的64位元註冊表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!