在 64 位元版本的 Windows Server 2003 和 Windows XP 上執行 32 位元程式的相容性注意事項概觀

文章翻譯 文章翻譯
文章編號: 896456 - 檢視此文章適用的產品。
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。Microsoft 不以暗示或其他方式,提供與這些產品的效能或可靠性有關的保證。
全部展開 | 全部摺疊

在此頁中

結論

64 位元版本的 Microsoft Windows Server 2003 和 Microsoft Windows XP 使用 Microsoft Windows-32-on-Windows-64 (WOW64) 子系統來執行未經過修改的 32 位元程式。64 位元版本的 Windows Server 2003 和 Windows XP 不支援 16 位元二進位檔案或 32 位元驅動程式。依靠 16 位元二進位檔案或 32 位元驅動程式才能執行的程式,必須安裝程式製造商提供的程式更新,才能在 64 位元版本的 Windows Server 2003 和 Windows XP 上執行。

有些注意事項會影響程式的相容性或效能。只要在其中一個 64 位元版本的 Windows Server 2003 或 Windows XP 上測試程式,就可以判斷該程式有沒有相容性或效能問題。

本文將告訴您,在 64 位元版本的 Windows Server 2003 和 Windows XP 上執行 32 位元程式的一些相容性注意事項。本文不會比較 32 位元與 64 位元版本的 Windows Server 2003 和 Windows XP,或不同的 64 位元作業系統。本文假設您已經了解 32 位元二進位檔案和 64 位元二進位檔案之間的差異。

雖然本文中說明的相容性注意事項適用於 64 位元版本的 Windows Server 2003 和 Windows XP,但本文主要是針對 Microsoft Windows Server 2003 Service Pack 1 (SP1) 發行版本所撰寫的。存在 Windows Server 2003 SP1 和舊版 Windows Server 2003 64 位元版之間的任何主要功能差異會特別註明。

簡介

x64 位元版本的 Microsoft Windows Server 2003 和 Microsoft Windows XP Professional x64 Edition 在執行原始 64 位元程式時可以發揮最佳效能。此外,x64 位元版本的 Windows Server 2003 和 Windows XP Professional x64 Editionn 使用 WOW64 子系統來執行 32 位元程式。

其他相關資訊

執行 32 位元程式

WOW64 子系統讓 32 位元程式可以不經修改,就能直接在 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 上執行。WOW64 子系統會在 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 上建立 32 位元環境,以達到此目的。如需有關 WOW64 子系統的詳細資訊,請參閱 Microsoft Platform SDK 文件<64 位元 Windows>一節中的<執行 32 位元應用程式>(英文) 主題。如果要檢視此文件,請造訪下列 Microsoft 網站:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win64/win64/running_32_bit_applications.asp

程式效能注意事項

WOW64 子系統會在 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 上建立 32 位元環境。與在 32 位元版 Windows Server 2003 和 Windows XP 上執行相比,有些 32 位元程式的執行速度可能會變慢。例如,32 位元程式在 Windows XP Professional x64 Edition 上的執行速度,可能會比原先在 Microsoft Windows XP Professional 上的速度慢。或者,有些需要大量記憶體的 32 位元程式,在 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 上執行可能會呈現效能提高的情形。效能提高的原因在於,x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 支援比 32 位元版本的 Windows Server 2003 和 Windows XP Professional 更多的實體記憶體。

如需有關 64 位元和 32 位元版本 Windows 之間記憶體管理差異的詳細資訊,請參閱 Microsoft Platform SDK 文件<關於記憶體管理>一節中的<虛擬位址空間>(英文) 主題。如果要檢視此文件,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/aa366912.aspx

WOW64 子系統的限制

WOW64 子系統不支援下列程式:
  • 針對 16 位元作業系統編譯的程式
  • 針對 32 位元作業系統編譯的核心模式程式

16 位元程式

x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 不支援 16 位元程式或 16 位元程式元件。為了讓 16 位元程式可以在 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 上執行,因此所需要的軟體模擬功能,會顯著降低這些程式的效能。

16 位元安裝程式經常用來安裝和設定 32 位元程式。此外,有些 32 位元程式需要 16 位元的元件才能正常執行。雖然需要 16 位元元件的 32 位元程式在安裝後可能會正常執行,但是您無法使用 16 位元安裝程式來安裝 32 位元程式。需要 16 位元元件的程式無法在 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 上執行。

如果需要 16 位元元件的 32 位元程式嘗試執行 16 位元的檔案或元件,該 32 位元程式將會在系統記錄檔中記錄錯誤訊息。然後作業系統會讓 32 位元程式處理錯誤。

如果要判斷程式是否需要 16 位元的元件,請安裝並執行程式。如果程式產生錯誤訊息,請連絡程式製造商,以取得與 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 相容的更新。

32 位元驅動程式

x64 版的 Windows Server 2003 和 Windows XP Professional x64 Edition 不支援 32 位元的驅動程式。所有硬體裝置驅動程式和程式驅動程式都必須特別針對 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 進行編譯。

如果 32 位元程式嘗試在執行 x64 版 的 Windows Server 2003 SP1 或 Windows XP Professional x64 Edition 的電腦上安裝 32 位元驅動程式,驅動程式的安裝會失敗。發生這種情形時,Windows Server 2003 SP1 x64 版或 Windows XP Professional x64 Edition 會向 32 位元程式回報錯誤。

如果 32 位元程式嘗試登錄 32 位元驅動程式,以便在執行 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 的電腦上自動啟動,電腦上的開機載入器會辨識出系統不支援此 32 位元驅動程式。x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 不會啟動 32 位元驅動程式,但會啟動其他登錄的驅動程式。

如果要判斷程式是否需要 32 位元的驅動程式,請安裝並執行程式。如果程式產生錯誤訊息,請連絡程式製造商,以取得與 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 相容的更新。

其他注意事項

登錄和檔案重新導向

WOW64 子系統會重新導向登錄呼吸和部分檔案系統呼叫,藉此區隔 32 位元二進位檔案和 64 位元二進位檔案。WOW64 子系統將二進位檔案隔離開來,以防止 32 位元二進位檔案意外存取 64 位元二進位檔案中的資料。例如,32 位元二進位檔案如果執行 %systemroot%\System32 資料夾中的 .dll 檔案,可能會意外嘗試存取跟 32 位元二進位檔案不相容的 64 位元 .dll 檔案。為了防止這種情形發生,WOW64 子系統會將從 %systemroot%\System32 資料夾存取 %systemroot%\SysWOW64 資料夾的動作重新導向。這個重新導向可以防止相容性錯誤,因為它要求 .dll 檔案必須是專為搭配 32 位元程式使用而設計的。

如需有關檔案系統和登錄重新導向的詳細資訊,請參閱 Microsoft Platform SDK 文件<64 位元 Windows>一節中的<執行 32 位元應用程式>(英文) 主題。如果要檢視此文件,請造訪下列 Microsoft 網站:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win64/win64/running_32_bit_applications.asp
WOW64 子系統可以在不變更 32 位元二進位檔案的情況下重新導向 32 位元二進位呼叫。但是您在執行某些工作時,可能會看到這個重新導向的跡象。例如,如果您在 64 位元命令提示字元中輸入命令列指令碼,命令提示字元可能無法存取 Program Files 資料夾中的 32 位元程式。WOW64 子系統會重新導向並在 Program Files (x86) 資料夾中安裝 32 位元程式。如果要存取正確的資料夾,您必須變更命令列指令碼。或者,您必須在 32 位元命令提示字元中輸入命令列指令碼。32 位元命令提示字元會自動將檔案系統呼叫重新導向到正確的 32 位元目錄。

如果要啟動 32 位元命令提示字元,請依照下列步驟執行:
  • 按一下 [開始],再按一下 [執行],輸入 %windir%\SysWoW64\cmd.exe,然後按一下 [確定]

版本檢查

有些 32 位元程式會檢查作業系統的版本資訊。許多執行這項檢查的 32 位元程式不會將 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 視為相容的作業系統。發生這種情形時,32 位元程式將會產生版本檢查錯誤,然後結束。如果發生這種情形,請連絡 32 位元程式製造商,以取得與 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 相容的更新。

Microsoft .NET Framework

如果下列條件成立,Microsoft .NET Framework 相容的程式將會當做 32 位元程式在 WOW64 子系統中執行:
  • 程式標題資訊中已設定 ILONLY 位元。
  • 程式是以 Microsoft .NET Framework 1.1 編譯。
如果未設定程式標題資訊中的 ILONLY 位元,或如果程式是以 Microsoft .NET Framework 版本 2.0 編譯,該程式就會以原始 64 位元形式執行。

OpenGL

x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 不包括 OpenGL 圖形驅動程式。請連絡裝置製造商,以取得與 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 相容的驅動程式。

Microsoft Management Console (MMC)

x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 使用 64 位元版本的 Microsoft Management Console (MMC) 來執行不同的嵌入式管理單元。但是您有時候可能需要 32 位元版本的 MMC,才能在 WOW64 子系統中執行嵌入式管理單元。如需有關 MMC 在 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 上運作方式的詳細資訊,請參閱 Microsoft Platform SDK 文件<使用 MMC 2.0>一節中的<在 64 位元 Windows 中執行 32 位元和 64 位元嵌入式管理單元>(英文) 主題。如果要檢視此文件,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/aa815172.aspx

Itanium 注意事項

下列章節會簡要說明在 Itanium 版本的 Microsoft Windows Server 2003 和 Microsoft Windows XP 上執行 32 位元程式時特有的注意事項和限制。

Intel Architecture 32-bit Execution Layer (IA-32 EL)

Itanium 版本的 Microsoft Windows Server 2003 Service Pack 1 (SP1) 和 Microsoft Windows XP 使用 Intel Architecture 32-bit Execution Layer (IA-32 EL) 支援 32 位元程式。在先前 Itanium 版本的 Microsoft Windows Server 2003 和 Windows XP 中,這些程式是由 WOW64 子系統支援。WOW64 子系統使用 CPU 中特殊的硬體來執行 32 位元程式的 x86 指令。但是,IA-32 EL 會將 32 位元程式的 x86 指令轉譯成 Windows Server 2003 Itanium 版和 Windows XP Itanium 版中同等的指令。IA-32 EL 會將 32 位元程式的 x86 指令轉譯成原始的 64 位元模式,然後讓 WOW64 子系統在 Itanium CPU 硬體上執行 32 位元程式。

在 Itanium CPU 硬體上執行 32 位元程式可能會提高 32 位元程式的效能。即使 IA-32 EL 在 32 位元和 64 位元指令集之間轉譯指令時會產生一些負荷,您還是會感受到效能提高的效果。IA-32 EL 也提供許多功能,可以提高 32 位元程式的效能。例如,IA-32 EL 可以快取已經轉譯的指令。這將會提高目前正在執行的 32 位元程式的效能。

如需有關 IA-32 EL 的詳細資訊,請造訪下列 Intel 網站:

http://www.intel.com/cd/software/products/asmo-na/eng/219773.htm Microsoft 提供協力廠商的連絡資訊,以協助您找出技術支援。此連絡資訊若有變更,恕不另行通知。Microsoft 不保證此協力廠商連絡資訊的準確性。

記憶體管理

在 Itanium 版本的 Microsoft Windows Server 2003 和 Windows XP 上,不支援下列 32 位元程式的記憶體管理員功能:
  • 散佈/收集輸出入 (IO)
    如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    160606 Performance Enhancements for SQL Server Under Windows NT
  • Address Windowing Extensions (AWE)
  • 記憶體分頁修改通知
需要這些功能的 32 位元程式無法在 Itanium 版本的 Windows Server 2003 和 Windows XP 上執行。您必須執行該程式的 64 位元版本。

如果需要這些記憶體管理功能的 32 位元程式產生錯誤,請連絡程式製造商,以取得與 Itanium 版本的 Windows Server 2003 和 Windows XP 相容的更新。

圖形支援

下表顯示在 Itanium 版本的 Windows Server 2003 和 Windows XP 上執行 32 位元二進位檔案時,支援的圖形解決方案。
摺疊此表格展開此表格
圖形解決方案軟體加速硬體加速
DDraw
D3D3
D3D5
D3D6
D3D7
D3D8
D3D9
OpenGL
在不支援圖形硬體加速的情況下,需要圖形硬體加速的二進位檔案將無法在 Itanium 版本的 Windows Server 2003 和 Windows XP 上以 32 位元二進位檔案形式執行。而且,在不支援硬體加速的情況下,大量使用圖形的 32 位元二進位檔案將會遇到效能降低的情況。

如果 32 位元程式需要 DirectX 硬體加速,請連絡程式製造商,以取得與 Itanium 版本的 Windows Server 2003 和 Windows XP 相容的更新。

x64 注意事項

x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 支援 32 位元和 64 位元的指令。WOW64 子系統可以藉由切換處理器的原始模式,而以原始的 64 位元模式執行 32 位元程式,不需要單獨的硬體或軟體層。當您在 x64 版本的 Windows Server 2003 和 Windows XP Professional x64 Edition 上執行 32 位元程式時,可能不會遇到效能降低的情況。

如需有關 x64 處理器效能的詳細資訊,請連絡處理器製造商,或造訪製造商的網站。本文件中的資訊和解決方案是 Microsoft Corporation 在本文件發行當時對這些問題的看法。您可以透過 Microsoft 或協力廠商提供者取得這個解決方案。Microsoft 不特別建議本文可能提及的任何協力廠商提供者或協力廠商解決方案。本文也可能未提及其他協力廠商提供者或協力廠商解決方案。因為 Microsoft 必須不斷因應市場動態,所以本文所提供的資訊不應解釋為 Microsoft 的承諾。對於由 Microsoft 或任何提及的協力廠商提供者所提供之任何資訊或任何解決方案的正確性,Microsoft 不提供擔保或背書。

Microsoft 不擔保並排除任何明示、默示或法定之說明、擔保及條件。這包括 (但不限於) 有關任何服務、解決方案、產品或任何其他資料或資訊之所有權、不侵權、滿意條件、適售性及適合某特定用途之說明、擔保及條件。無論任何情況下,Microsoft 對本文提及的任何協力廠商解決方案皆不負任何法律責任。

?考

如需有關 Intel Itanium II 處理器的詳細資訊,請造訪下列 Intel 網站:
http://www.intel.com/products/processor/itanium2/index.htm
Microsoft 提供協力廠商的連絡資訊,以協助您找出技術支援。此連絡資訊若有變更,恕不另行通知。Microsoft 不保證此協力廠商連絡資訊的準確性。

如需有關 AMD64 處理器的詳細資訊,請造訪下列 Advanced Micro Devices 網站:
http://www.amd.com/us-en/
Microsoft 提供協力廠商的連絡資訊,以協助您找出技術支援。此連絡資訊若有變更,恕不另行通知。Microsoft 不保證此協力廠商連絡資訊的準確性。

如需有關為 Itanium 版的 Windows Server 2003 和 Windows XP 開發程式的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/ms952405.aspx


如需有關為 64 位元版本的 Windows Server 2003 和 Windows XP 開發程式而發生之其他相關問題的詳細資訊,請造訪下列 Microsoft 網站:
http://www.microsoft.com/taiwan/msdn/
http://msdn.microsoft.com/library/en-us/sdkintro/sdkintro/devdoc_platform_software_development_kit_start_page.asp
http://msdn.microsoft.com/library/en-us/Intro_g/hh/Intro_g/ddksplash_d0c992d8-3d64-44cc-ab2c-13bcfa0faffb.xml.asp


屬性

文章編號: 896456 - 上次校閱: 2007年2月17日 - 版次: 4.4
這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003, Datacenter x64 Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, Standard x64 Edition
  • Microsoft Windows XP Professional x64 Edition
關鍵字:?
kbinfo kbtshoot kbperformance kbinterop kbhardware kbusage KB896456
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com