Windows 10如何執行16位元舊程式?winevdm小工具讓64位元系統也能支援舊程式

筆者最近在回味舊遊戲的時候,發現Windows 10已經偷偷把內建的NTVDM模擬器功能拿掉,因此需要透過第三方小工具來建立執行環境。

WOW!原來Windows還有這一手

在1995年作業系統由Windows 3.1過渡到Windows 95的時期,因為Windows 95仍然是建立在Dos上的軟體,本質仍為16/32位元混合系統,因此不需修改就能直接執行舊有16位元應用程式,同時也能支援新的32位元應用程式。

不過以Windows NT為基礎的作業系統,則無法直接達到上述相容性。

為了解決這個問題,Microsoft在1993年就為採用IA-32處理器架構IA-32的Windows NT作業系統提供NTVDM(NT Virtual DOS Machine,NT DOS虛擬機器),讓使用者能在32位元的Windows NT作業系統中執行16位元Windows應用程式,以及16、32位元DOS應用程式。

此外Microsoft推出了Windows on Windows(簡稱WOW)相容層,能夠擴展透過NTVDM執行為Windows 3.x開發的舊式16位元Windows應用程式之相容性。

之後Microsoft也推出WOW64,讓64位元Windows作業系統能夠執行32位元應用程式。

不過根本Microsoft官方網站的《NTVDM and 16-bit app support》說明文件,NTVDM無法支援64位元作業系統,所以64位元Windowsy作業系統上無法正常啟用該功能。

▲ 官方說明文件提到在Windows 10啟用NTVDM的方式。

▲ 但64位元Windows 10無法正常啟用功能。

▲ 在未啟用NTVDM的情況下,Windows 10無法執行為Windows 3.1開發的16位元應用程式。

透過winevdm達到相容

winevdm下載連結 :
https://github.com/otya128/winevdm/releases

開發者otya128所開發的winevdm工具軟體功能與NTVDM類似,它整合了處理器模擬器、以Wine為基礎的Win16->Win32轉換程式碼(wine based Win16->Win32 conversion codes)、16位元DOS模擬器等元件,能夠讓64位元的Windows 10作業系統執行16位元應用程式。

下載並解壓縮winevdm之後,只需將16位元應用程式拖曳到otvdm.exe上,就能直接執行。如果出現「遺失VCRUNTIME140.dll」的錯誤訊息,只需安裝Microsoft Visual C++ Redistributable for Visual Studio 2017 (32-bit)就可解決問題。

此外讀者也可以執行解壓縮得到的install捷徑安裝程式,如此一來就能夠像開啟一般程式一樣,雙擊16位元應用程式就能直接執行。

如果winevdm的登錄檔被Windows Update覆蓋而失效,只需重新執行install即可,讀者也可以透過執行uninstall.reg解除安裝。

筆者實際以Glider 4.0遊戲進行測試,在未安裝winevdm的情況下,執行Glider 4.0會出現「此應用程式無法在您的電腦上執行」的錯誤訊息,而安裝之後,遊戲就能正常執行,不過在遊戲中進行按鍵設定時,會觸發當機情況,此外並沒有發現其他問題。

▲ 下載並解壓縮winevdm之後,可以執行install捷徑安裝(之後可以直接雙擊16位元應用程式執行),或將16位元應用程式拖曳到otvdm.exe上執行。

▲透過winevdm執行Windows 3.1版的Glider 4.0遊戲,執行效果相當流暢。

▲ 測試過程中唯一發現的Bug是進行按鍵設定會觸發當機。

雖然說到現在還需要執行的Windows 3.1程式所剩無幾,但萬一遇到需要的時候,就可以透過winevdm達到相容的效果,並省下安裝虛擬機器的麻煩,不失為一方便的解決方案。