1. 程式人生 > >32位程式在64位系統讀登錄檔問題

32位程式在64位系統讀登錄檔問題

我們進行專案開發時,有些配置經常會放在登錄檔中進行控制。一般情況下,為了能夠相容32位系統和64位系統,我們的應用程式都是32位的。在解決專案問題中,就涉及到32位和64位的登錄檔問題,今天記錄如下。

問題現象:

我們的程式在32位系統執行的正常,但在64位系統下,某些功能開始失效,日誌列印開關也不受登錄檔控制。

原因分析:

64 位版本 Windows 中的登錄檔分為 32 位登錄檔項和 64 位登錄檔項。許多 32 位登錄檔項與其相應的 64 位登錄檔項同名。在不知道情況下,特別容易搞混亂,因此需要特別注意。

為了防止登錄檔鍵衝突,登錄檔在某些鍵也分成了兩個部分。一部分是專門給64位系統訪問的,另一部分是專門給32位系統訪問的。當32位程式去訪問某些鍵值的時候,和檔案轉向類似,系統也會自動地把程式的訪問轉向到Wow6432Node下面。

在 64 位版本的登錄檔編輯器中,32 位登錄檔項顯示在以下注冊表項下:
HKEY_CURRENT_USER\Software\Wow6432Node\