1. 程式人生 > >在64位作業系統上執行32位的程式

在64位作業系統上執行32位的程式

執行 32 位程式

WOW64 子系統使 32 位程式能夠在基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的執行而不用修改。WOW64 子系統是通過在基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的建立 32 位環境。WOW64 子系統有關的詳細資訊,請參閱 Microsoft 平臺 SDK 文件的 64 位 Windows 部分中的"執行 32-位應用程式"主題。若要檢視此文件,請訪問下面的 Microsoft 網站:

程式效能方面的考慮

WOW64 子系統建立基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的 32 位環境。
某些 32 位程式可能會較慢執行這些作業系統的系統上而不願在 32 位版本的 Windows Server 2003 和 Windows XP。例如,32 位程式可能執行得更慢 Windows XP 專業 x64 版上比它像在 Microsoft Windows XP 專業版上。或者,某些 32 位程式需要大量記憶體可能會表現出更高的基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的效能。此效能提高的原因是基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的支援更多的實體記憶體比 32 位版本的 Windows Server 2003 和 Windows XP 專業版。


有關 64 位和 32 位的 Windows 版本之間的記憶體管理之間的區別的詳細資訊,請參閱 Microsoft 平臺 SDK 文件中的記憶體管理有關本節中的"虛擬地址空間"主題。若要檢視此文件,請訪問下面的 Microsoft 網站:

WOW64 子系統的限制

WOW64 子系統不支援下列程式:
  • 對於 16 位作業系統進行編譯的程式
  • 被編譯為 32 位作業系統的核心模式程式

16 位程式

不支援基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的 16 位程式或 16 位程式元件。軟體模擬所需的基於 x64 的版本或 Windows XP 專業 x64 版的 Windows Server 2003 上執行 16 位程式會大大減少這些程式的效能。


將一個 16 位的安裝經常用於安裝和配置的 32 位程式。此外,某些 32 位程式需要 16 位元件,才能正確執行。雖然在安裝後需要 16 位元件的 32 位程式可能會正確執行,您不能使用 16 位安裝程式安裝的 32 位程式。需要 16 位元件的程式不能執行在基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版。

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

要確定是否在程式需要一個 16 位元件,請安裝並執行該程式。如果該程式生成一條錯誤訊息,該程式的製造商聯絡與基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的相容的更新。

32 位驅動程式

基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版不支援 32 位驅動程式。必須專門為基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的編譯所有硬體裝置驅動程式和程式的驅動程式。

如果嘗試在計算機上安裝 32 位驅動程式的 32 位程式正在執行基於 x64 版本的 Windows Server 2003 SP1 或 Windows XP 專業 x64 版的驅動程式安裝失敗。在這種情況,或 Windows Server 2003 SP1 的 Windows XP 專業 x64 版的基於 x64 版本的 32 位程式報告的錯誤。

如果嘗試註冊為正在執行基於 x64 版本或 Windows XP 專業 x64 版的 Windows Server 2003 的計算機上自動啟動 32 位驅動程式的 32 位程式,認識到引導載入程式在計算機上不受支援的 32 位驅動程式。基於 x64 版本的 Windows Server 2003 或 Windows XP 專業 x64 版的不啟動 32 位驅動程式,但不啟動其他已註冊的驅動程式。

要確定是否在程式需要 32 位驅動程式,請安裝並執行該程式。如果該程式生成一條錯誤訊息,該程式的製造商聯絡與基於 x64 版本的 Windows Server 2003 和 Windows XP 專業 x64 版的相容的更新。

其他注意事項

登錄檔和檔案重定向

WOW64 子系統將從 64 位二進位制檔案的 32 位二進位制檔案隔離通過將登錄檔呼叫和某些檔案系統呼叫重定向。WOW64 子系統將隔離的二進位制檔案,以防止意外地從 64 位二進位制檔案訪問資料的 32 位二進位制檔案。例如,從 %systemroot%\System32 資料夾執行.dll 檔案的 32 位二進位制檔案可能會無意中嘗試訪問不相容的 32 位二進位制檔案的 64 位的.dll 檔案。要防止這樣,WOW64 子系統將重定向到 %systemroot%\SysWOW64 資料夾從 %systemroot%\System32 資料夾的訪問。這種重定向可防止相容性錯誤,因為它要求要被專門用於使用 32 位程式的.dll 檔案。

有關檔案系統和登錄檔重定向的詳細資訊,請參閱 Microsoft 平臺 SDK 文件的 64 位 Windows 部分中的"執行 32-位應用程式"主題。若要檢視此文件,請訪問下面的 Microsoft 網站: WOW64 子系統將 32 位二進位制呼叫重定向而不需要更改對 32 位二進位制檔案。但是,當您執行某些任務時可以看到此重定向的證據。例如,如果在 64 位命令提示符下鍵入命令列指令碼,在命令提示符下可能不能訪問 32 位程式檔案資料夾中的程式。WOW64 子系統將重定向並將 32 位程式安裝程式檔案 (x86) 資料夾中。若要訪問正確的資料夾中,則必須更改該命令列指令碼。另外,也必須在 32 位命令提示符下鍵入命令列指令碼。32 位命令提示符下自動重定向到正確的 32 位目錄的檔案系統呼叫。

若要啟動 32 位命令提示符處,執行以下步驟:
  • 單擊開始,單擊執行,鍵入%windir%\SysWoW64\cmd.exe,然後單擊確定.