本文討論在64位版本的Windows上執行的32位程式相容性考慮和限制。
原始 KB 編號: 896456
摘要
64 位版本的 Windows 會使用 Microsoft Windows-32-on-Windows-64 (WOW64) 子系統,在不修改的情況下執行 32 位程式。 64 位版本的 Windows 不支援 16 位二進位檔或 32 位驅動程式。 除非程式製造商提供程式的更新,否則相依於16位二進制檔或32位驅動程式的程式無法在64位版本的Windows上執行。
可能會影響程式相容性或效能的考慮。 您可以在其中一個 64 位版本的 Windows 上測試程式,以判斷程式是否有相容性或效能問題。
本文說明在64位版本的Windows上執行32位程式的一些相容性考慮。 本文不會比較 32 位和 64 位版本的 Windows,或不同的 64 位作業系統。 本文假設您瞭解 32 位二進位檔與 64 位二進位檔之間的差異。
簡介
以 x64 為基礎的Microsoft Windows 版本已經過優化,可執行原生 64 位程式。 此外,以 x64 為基礎的 Windows 版本會使用 WOW64 子系統來執行 32 位程式。
執行32位程式
WOW64 子系統可讓 32 位程式在不修改以 x64 為基礎的 Windows 版本上執行。 WOW64 子系統會藉由在以 x64 為基礎的 Windows 版本上建立 32 位環境來執行這項作業。 如需 WOW64 子系統的詳細資訊,請參閱 Microsoft Platform SDK 檔的 64 位 Windows 一節中的<執行 32 位應用程式>主題。 若要檢視這份檔,請流覽下列Microsoft網站: 執行32位應用程式。
程式效能考慮
WOW64 子系統會在以 x64 為基礎的 Windows 版本上建立 32 位環境。 有些 32 位程式在這些操作系統上執行的速度可能會比 32 位版本的 Windows 慢。 或者,某些需要大量記憶體的32位程式可能會在以 x64 為基礎的 Windows 版本上表現出更高的效能。 因為以 x64 為基礎的 Windows 版本支援比 32 位版本的 Windows 更多的物理記憶體,因此會發生此效能增加。
如需 64 位和 32 位版本的 Windows 記憶體管理差異的詳細資訊,請參閱 Microsoft Platform SDK 檔的一節中的主題。 若要檢視本檔,請流覽下列Microsoft網站: 虛擬位址空間
WOW64 子系統的限制
WOW64 子系統不支援下列程式:
針對16位操作系統編譯的程式
針對32位操作系統編譯的核心模式程式
16 位程式
以 x64 為基礎的 Windows 版本不支援 16 位程式或 16 位程式元件。 在以 x64 為基礎的 Windows 版本上執行 16 位程式所需的軟體模擬,會大幅降低這些程式的效能。
16 位安裝程式經常用來安裝和設定 32 位程式。 此外,有些32位程式需要16位元件才能正確執行。 雖然需要16位元件的32位程式在安裝之後可能會正確執行,但您無法使用16位安裝程式來安裝32位程式。 需要16位元件的程式無法在以 x64 為基礎的 Windows 版本上執行。
如果需要 16 位元件的 32 位程式嘗試執行 16 位檔案或元件,32 位程式會在系統記錄檔中記錄錯誤訊息。 然後,操作系統會讓32位程式處理錯誤。
若要判斷程式是否需要16位元件,請安裝並執行程式。 如果程式產生錯誤訊息,請連絡程式製造商以取得與 x64 型 Windows 版本相容的更新。
32 位驅動程式
以 x64 為基礎的 Windows 版本不支援 32 位驅動程式。 所有硬體設備驅動器和程式驅動程式都必須特別針對以 x64 為基礎的 Windows 版本進行編譯。
如果 32 位程式嘗試在執行 x64 型 Windows 版本的電腦上安裝 32 位驅動程式,則驅動程式的安裝會失敗。 發生此行為時,以 x64 為基礎的 Windows 版本會向 32 位程式回報錯誤。
如果 32 位程式嘗試在執行 x64 型 Windows 版本的電腦上註冊 32 位驅動程式以進行自動啟動,則電腦上的啟動程式載入器會辨識 32 位驅動程式不受支援。 以 x64 為基礎的 Windows 版本不會啟動 32 位驅動程式,但會啟動其他已註冊的驅動程式。
若要判斷程式是否需要 32 位驅動程式,請安裝並執行程式。 如果程式產生錯誤訊息,請連絡程式製造商以取得與 x64 型 Windows 版本相容的更新。
其他考量
登錄和檔案重新導向
WOW64 子系統會重新導向登錄呼叫和一些文件系統呼叫,以隔離 32 位二進位檔與 64 位二進位檔。 WOW64 子系統會隔離二進位檔,以防止 32 位二進位檔不小心從 64 位二進位檔存取數據。 例如,從 %systemroot%\System32 資料夾執行.dll檔案的 32 位二進位檔,可能會不小心嘗試存取與 32 位二進位檔不相容的 64 位.dll檔案。 若要避免這種情況,WOW64 子系統會將存取權從 %systemroot%\System32 資料夾重新導向至 %systemroot%\SysWOW64 資料夾。 此重新導向會防止相容性錯誤,因為它需要特別設計.dll檔案來處理 32 位程式。
如需檔案系統和登錄重新導向的詳細資訊,請參閱 Microsoft Platform SDK 檔的 64 位 Windows 一節中的<執行 32 位應用程式>主題。 若要檢視這份檔,請流覽下列Microsoft網站: 執行32位應用程式
WOW64 子系統會重新導向 32 位二進位呼叫,而不需要變更 32 位二進位檔。 不過,當您執行某些工作時,可能會看到此重新導向的證據。 例如,如果您在 64 位命令提示字元中輸入命令行腳本,命令提示字元可能無法存取 Program Files 資料夾中的 32 位程式。 WOW64 子系統會在 Program Files (x86) 資料夾中重新導向並安裝 32 位程式。 若要存取正確的資料夾,您必須變更命令行腳本。 或者,您必須在 32 位命令提示字元中輸入命令行腳本。 32 位命令提示字元會自動將文件系統呼叫重新導向至正確的 32 位目錄。
若要啟動 32 位命令提示字元,請遵循下列步驟:
按兩下 [開始],按兩下 [執行],輸入 %windir%\SysWoW64\cmd.exe,然後按兩下 [ 確定]。
版本檢查
有些 32 位程式會檢查作業系統的版本資訊。 執行這項檢查的許多32位程式無法將 x64 型 Windows 版本辨識為相容的作業系統。 發生此行為時,32 位程式會產生版本檢查錯誤,然後關閉。 如果發生此行為,請連絡 32 位程式的製造商,以取得與 x64 型 Windows 版本相容的更新。
The Microsoft .NET Framework
使用 Microsoft .NET Framework 編譯的程式會在 WOW64 子系統中以 32 位程式的形式執行,如果下列條件成立:
程式在標頭信息中設定了 ILONLY 位。
程式是以 .NET Framework 1.1 Microsoft編譯。 如果程式在標頭資訊中未設定 ILONLY 位,或程式是以 Microsoft .NET Framework 2.0 版編譯,則程式會以原生 64 位程式的形式執行。
OpenGL
以 x64 為基礎的 Windows 版本不包含 OpenGL 圖形驅動程式。 請連絡裝置製造商,以取得與 x64 型 Windows 版本相容的驅動程式。
Microsoft Management Console (MMC)
以 x64 為基礎的 Windows 版本會使用 64 位版本的 Microsoft Management Console (MMC) 來執行各種嵌入式管理單元。不過,您偶爾可能需要 32 位版本的 MMC 在 WOW64 子系統中執行嵌入式管理單元。 如需 x64 型 Windows 上 MMC 行為的詳細資訊,請參閱 Microsoft Platform SDK 檔的<使用 MMC 2.0>一節中的<在 64 位 Windows 中執行 32 位和 64 位嵌入式管理單元>主題。 若要檢視本檔,請流覽下列Microsoft網站: 在64位 Windows 中執行 32 位和 64 位嵌入式管理單元
x64 考慮
以 x64 為基礎的 Windows 版本支援 32 位指令和 64 位指令。 WOW64 子系統可以切換處理器的原生模式,以原生 64 位模式執行 32 位程式。 不需要個別的硬體或軟體層。 當您在以 x64 為基礎的 Windows 版本上執行 32 位程式時,可能無法體驗效能降低。
如需 x64 處理器效能的詳細資訊,請連絡處理器的製造商,或造訪製造商的網站。 本文件中的資訊和解決方案代表 Microsoft Corporation 在本文件發行當時對這些問題的看法。 此解決方案可透過 Microsoft 或協力廠商提供商獲得。 Microsoft 不特別建議本文可能提及的任何協力廠商提供者或協力廠商解決方案。 本文也可能未提及其他協力廠商提供者或協力廠商解決方案。 由於 Microsoft 必須不斷因應市場動態,因此,本文所提供的資訊不應解釋為 Microsoft 的承諾。 對於由 Microsoft 或任何提及的協力廠商提供者所提供之任何資訊或任何解決方案的正確性,Microsoft 不提供擔保或背書。
Microsoft 不擔保並排除任何明示、默示或法定之說明、擔保及條件。 這些內容不限於任何服務、解決方案、產品或任何其他材料或資訊之擁有權、不侵權、滿意條件、適銷性及適合特定用途的陳述、擔保或條件。 無論任何情況下,Microsoft 對本文提及的任何協力廠商解決方案皆不負任何法律責任。
參考資料
如需 AMD64 處理器的詳細資訊,請流覽下列進階 Micro Devices 網站: AMD 網站
Microsoft 提供第三方連絡資訊,協助您尋找技術支援。 此連絡資訊可能會變更而不另行通知。 Microsoft 不保證此第三方連絡資訊的正確性。
如需針對 Windows Server 2003 和 Windows XP 版本開發程式的詳細資訊,請流覽下列Microsoft網站: 開發 64 位 Itanium 型 Windows 版本的應用程式簡介
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以暗示或其他方式擔保這些產品的效能或可靠性。