1、登錄檔位置
64bit
系統(windows server 2008 r2
只有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主鍵來儲存使用者配置吧。
4、參考文件
如何通過使用 64 位版本 windows 檢視系統登錄檔
accessing an alternate registry view
registry redirector in x64 / ia64
64bit系統下操作登錄檔的注意事項
1 登錄檔位置 64bit 系統 windows server 2008 r2 只有64bit 系統 的登錄檔分 32 位登錄檔項和 64位登錄檔項兩部分。在 64bit 系統下,通過 regedit 中檢視到指定路徑下的登錄檔項均為 64位登錄檔項,而 32位登錄檔項被重定位到 hkey loca...
64bit作業系統的重定向
64位作業系統下拷貝檔案重定向問題 問題 installshield2009安裝包在win 7 x64安裝,需要把檔案複製到windows system32 下面 可是系統會自動複製到windows syswow64下面,查一下來是檔案自動轉向 原因 64位作業系統有自動重定向功能,即使寫死了拷貝到...
delphi下操控登錄檔的語句
delphi下操控登錄檔的語句 32位delphi程式中可利用tregistry物件來訪問登錄檔檔案中的資訊。一 建立和釋放tregistry物件 1.建立tregistry物件。為了操作登錄檔,要建立乙個tregistry物件 aregistry tregistry.create 2.釋放treg...