以 x64 為基礎的 Windows 版本中的登錄變更

本文說明在 Microsoft Windows Server 2003 和 Microsoft Windows XP Professional x64 Edition 的 x64 型版本中所做的一些登錄變更。 其中描述 Windows x64 版本作業系統如何儲存 32 位程式和 64 位程式的登錄資訊。

適用於:Windows 10 - 所有版本、Windows Server 2012 R2
原始 KB 編號: 896459

摘要

重要事項

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。 如需如何備份和還原登錄的詳細資訊,請按下列文章編號以檢視 Microsoft 知識庫中的文章: 322756 如何在 Windows 中備份和還原登錄

執行 x64 版 Microsoft Windows Server 2003 或 Microsoft Windows XP Professional x64 Edition 的計算機會使用不同的登錄版面配置來處理 32 位和 64 位程式。 Windows 作業系統 x64 Edition 版本中的登錄配置變更,可確保不會覆寫硬式編碼 .dll 路徑、程式設定和其他參數值的程式。

為了避免 32 位登錄設定覆寫 64 位登錄設定,執行 x64 架構版本 Microsoft 的電腦會在登錄的新分支中儲存 32 位程式的設定。 使用者不會在程式安裝期間注意到任何變更。 登錄重新導向程式可讓程式安裝和程式組態設定存取正確的登錄子機碼,而不需要使用者介入。

在 x64 型 Windows 版本上執行的 32 位程式和 64 位程式會以不同的模式運作,並在登錄中使用下列各節:

  • 原生模式 64 位程式會在原生模式中執行,並存取儲存在下列登錄子機碼中的金鑰和值:

    HKEY_LOCAL_MACHINE\Software

  • 32 位程式會在 WOW64 模式中執行,並存取儲存在下列登錄子機碼中的金鑰和值:

    HKEY_LOCAL_MACHINE\Software\WOW6432node

登錄重新導向

為了支援 32 位和 64 位 COM 註冊和程式狀態的共存,WOW64 子系統會使用登錄的另一個檢視來呈現 32 位程式。 WOW64 子系統會使用登錄重新導向來攔截位層級的登錄呼叫。 登錄重新導向也可確保登錄呼叫會導向至登錄中的正確分支。

當您安裝新的程式,或在 Windows x64 Edition 計算機上執行程式時,由 64 位程式進行的登錄呼叫會存取 HKEY_LOCAL_MACHINE\Software 登錄子機碼,而不需要重新導向。 WOW64 會攔截 32 位程式對 的登錄呼叫 HKEY_LOCAL_MACHINE\Software ,然後將它們重新導向至 HKEY_LOCAL_MACHINE\Software\WOW6432node 子機碼。 透過只重新導向 32 位程式呼叫,WOW64 可確保程式一律會寫入適當的登錄子機碼。 登錄重新導向不需要修改程序代碼,而且此程式對使用者而言是透明的。

重新導向中包含的登錄子機碼

下列登入子機碼會在目前版本的 Windows x64 版本作業系統中重新導向:

  • HKEY_LOCAL_MACHINE\Software\Classes
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Ole
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
  • HKEY_LOCAL_MACHINE\Software\Microsoft\COM3
  • HKEY_LOCAL_MACHINE\Software\Microsoft\EventSystem

重要事項

在更新的操作系統版本中,登錄機碼重新導向可能會變更。 建議軟體開發人員避免撰寫以先前記載的重新導向金鑰清單為基礎的程式代碼。 相反地,在呼叫登錄的 32 位或 64 位邏輯檢視之前,應該先撰寫程式代碼來驗證重新導向狀態。

登錄反映

登錄反映提供即時方法,讓登錄的32位和64位區段隨時開啟。 例如,假設有一個名為 Hello.exe 的 32 位程式可作為 32 位 OLE 伺服器,但也可以處理來自 64 位用戶端的要求。 登錄反映可讓 Hello.exe 程式保持開啟 32 位登錄和 64 位登錄,以處理 32 位和 64 位程式呼叫。

反映可讓相同登錄的兩個實體複本存在,以支援同時的原生和 WOW64 作業。 大部分反映的索引鍵都是類別索引鍵。 類別索引鍵是以「最後寫入者獲勝」的原理撰寫,而在寫入和關閉 32 位或 64 位類別索引鍵時,會關閉密鑰的句柄。

下列清單包含「最後寫入者獲勝」原理的一些範例:

  • 執行 Windows x64 Edition 作業系統的全新安裝之後,會註冊 64 位版本的 Wordpad.exe 來處理 .doc 檔案。 登錄反映器會將 .doc 註冊從 64 位登錄區段複製到 32 位登錄區段。
  • 當您安裝 32 位版本的 Microsoft Office 時,Winword.exe 會註冊以處理 32 位登錄檢視中的 .doc 檔案。 登錄反映器會將此資訊複製到64位登錄區段。 因此,32 位和 64 位程式都會針對 .doc 檔案啟動 32 位版本的 Winword.exe。
  • 當您安裝 64 位版本的 Microsoft Office 時,64 位版本的 Winword.exe 會在 64 位登錄區段中註冊,以處理 .doc 檔案。 登錄反映器也會將此資訊複製到 32 位登錄區段中,因此 32 位和 64 位程式都會啟動 .doc 檔案的 64 位版本 Winword.exe。

注意事項

開發人員可以使用 RegQueryReflectionKey 函式來判斷特定索引鍵的反映狀態,並使用 RegDisableReflectionKey 函式和 RegEnableReflectionKey 函式,以程式設計方式停用並啟用特定機碼的登錄反映。

共用登錄機碼

某些登錄子機碼包含的常數資訊只存在於登錄的一個複本中,即使這些機碼同時出現在 32 位和 64 位登錄檢視中也一樣。 這稱為登錄反映。

在目前版本的 Windows x64 版本作業系統中,下列登錄子機碼會在 32 位和 64 位程式之間共用,而且不會根據程式或程式的 32 位或 64 位層級來重寫:

  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\SYSTEMCERTIFICATES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CRYPTOGRAPHY\SERVICES
  • HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\HCP
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\ENTERPRISECERTIFICATES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSMQ
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\NETWORKCARDS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\PROFILELIST
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\PERFLIB
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\PRINT
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\PORTS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\CONTROL PANEL\CURSORS\SCHEMES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\TELEPHONY\LOCATIONS
  • HKEY_LOCAL_MACHINE\SOFTWARE\POLICIES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\GROUP POLICY
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\SETUP\OC MANAGER
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\SOFTWARE\MICROSOFT\SHARED TOOLS\MSINFO
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\SETUP
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CTF\TIP
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CTF\SYSTEMSHARED
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\FONTS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\FONTSUBSTITUTES
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\FONTDPI
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\FONTMAPPER
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\RAS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\DRIVER SIGNING
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\NON-DRIVER SIGNING
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CRYPTOGRAPHY\CALAIS\CURRENT
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\CRYPTOGRAPHY\CALAIS\READERS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\TIME ZONE
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\TRANSACTION SERVER
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\DFS
  • HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\TERMSERVLICENSING

重要事項

在後續的操作系統版本中,登錄機碼反映可能會變更。 建議軟體開發人員避免撰寫以先前記載的反映金鑰清單為基礎的程式代碼。 相反地,在程式呼叫登錄的 32 位或 64 位邏輯檢視之前,應該先撰寫程式代碼來驗證反映狀態。

登錄 編輯器 變更

32 位和 64 位版本的登錄 編輯器 都包含在 x64 Edition 作業系統中。 若要進一步瞭解 Windows x64 Edition 計算機上登錄的 64 位和 32 位程式區段,請使用下列其中一種方法。

若要啟動64位版本的登錄 編輯器

  1. 使用具有系統管理許可權的帳戶登入 Windows x64 Edition 計算機。
  2. 按一下 [開始][執行],在 [開啟] 方塊中鍵入「登錄編輯程式」,然後按一下 [確定]
  3. 在登錄 編輯器 中,找出並檢查下列登錄子機碼:HKEY_LOCAL_MACHINE\Software\WOW6432node

若要啟動 32 位版本的登錄 編輯器

按兩下 [開始],按兩下 [ 執行],在 [ 啟] 方塊中輸入您安裝 Windows x64 Edition\Windows\syswow64\regedit.exe m 的驅動器號,然後按兩下 [ 確定]m 參數可讓您執行多個登錄 編輯器 實例。

注意事項

當您登入 Microsoft Windows Server 2003 Service Pack 1 (SP1) 或更新版本電腦或 Windows x64 版本型電腦,並使用遠端桌面通訊協定 (RDP) 聯機到另一部 Windows Server 2003 SP1 或更新版本電腦或 Windows x64 版本型計算機時,您可以在遠端電腦上檢視登錄的 64 位區段。 不過,當您登入尚未升級至SP1或任何其他32位 Windows 作業系統的 Microsoft Windows Server 2003 計算機時,您只能在遠端電腦上檢視登錄的32位區段。

x64 型 Windows 版本的技術支援

如果您的硬體隨附已安裝的 Windows x64 版本,您的硬體製造商會提供 Windows x64 版本的技術支援和協助。 在此情況下,您的硬體製造商會提供支援,因為您的硬體附帶 Windows x64 Edition。 您的硬體製造商可能已使用獨特元件自訂 Windows x64 Edition 安裝。 獨特元件可能包含特定裝置驅動程式,或可能包括選用的設定,以最大化硬體效能。 如果您必須具備 Windows x64 版本的技術協助,Microsoft 將提供合理的協助。 不過,您可能必須直接與製造商連絡。 您的製造商最適合支援您廠商安裝在硬體上的軟體。 如果您另外購買了 Windows Server 2003 x64 版本等 Windows x64 版本,請連絡 Microsoft 以尋求技術支援。