1. 程式人生 > >VC 32位(或64位)win7作業系統的登錄檔操作

VC 32位(或64位)win7作業系統的登錄檔操作

1、登錄檔位置

Windows7 64bit系統的登錄檔分32 位登錄檔項和64位登錄檔項兩部分。

在64bit系統下,通過regedit中檢視到指定路徑下的登錄檔項均為64位登錄檔項,而32位登錄檔項被重定位到:   HKEY_LOCAL_MACHINE\Software\WOW6432Node。

應用程式操作登錄檔的時候也分32bit方式和64bit方式。運行於64bit系統下的32bit應用程式預設操作32位登錄檔項(即被重定向到WOW6432Node下的子項);而64bit應用程式才是操作的直觀子項。

比如,同在64bit系統下,使用如下程式碼訪問登錄檔:

::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Sobey\\MPC "), 0, KEY_ALL_ACCESS, &hKey)

如果應用程式為32bit子系統,那麼實際訪問的登錄檔位置為:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Sobey\MPC(使用regedit工具軟體對應的位置);

而如果應用程式為64bit子系統,那麼實際訪問的登錄檔位置將會是:

HKEY_LOCAL_MACHINE\SOFTWARE\Sobey\MPC(使用regedit工具軟體對應的位置)。

2、程式編寫

程式設計過程中,可以使用KEY_WOW64_64KEY和KEY_WOW64_32KEY明確的指定操作64位登錄檔項或者32位登錄檔項。例如,

在32bit子系統應用程式中,可以用如下方式明確指定訪問64bit登錄檔項,程式程式碼:

::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Sobey\\MPC "), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey)

注意關鍵字KEY_WOW64_64KEY;

這種方式寫入的登錄檔項將會確切的位於位置:HKEY_LOCAL_MACHINE\SOFTWARE\Sobey\MPC(使用regedit工具軟體對應的位置)。

在64bit子系統應用程式中,可以用如下方式明確指定訪問32bit登錄檔項,程式程式碼:

::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Sobey\\MPC\\Test"), 0, KEY_ALL_ACCESS | KEY_WOW64_32KEY, &hKey)

注意關鍵字KEY_WOW64_32KEY

這種方式寫入的登錄檔項將會確切的位於位置:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Sobey\MPC(使用regedit工具軟體對應的位置)。

3、特別提醒

上述說明只針對HKEY_LOCAL_MACHINE主鍵而言,HKEY_CURRENT_USER主鍵下沒有類似情況;當訪問HKEY_CURRENT_USER主鍵時,明確指定KEY_WOW64_64KEY和KEY_WOW64_32KEY標誌也沒有意義。

總之,儘可能使用HKEY_CURRENT_USER主鍵來儲存使用者配置吧。