64bit系統下操作登錄檔的注意事項

2021-06-28 09:31:40 字數 1794 閱讀 3705

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...