ADVERTISEMENT
筆者最近在回味舊遊戲的時候,發現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作業系統上無法正常啟用該功能。
透過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執行Windows 3.1版的Glider 4.0遊戲,執行效果相當流暢。
雖然說到現在還需要執行的Windows 3.1程式所剩無幾,但萬一遇到需要的時候,就可以透過winevdm達到相容的效果,並省下安裝虛擬機器的麻煩,不失為一方便的解決方案。
Windows 10 的 NTVDM 功能官方說的清楚,在本篇第二張截圖也有顯示:
原文是:
Note
To ensable this feature, you must be running Windows 10 32-bit and must have local administrator privileges.
We do not recommend enabling end-users to have local administrator privileges.
中文是:
備註
啟動此功能,必須使用 Windows 10 32-位元,並必須有本地管理員權限。
我們不建議終端使用者啟用本地管理員權限。
也就是說, NTVDM 功能只能在 Windows 10 的 32位元版本的系統啟用,64位元的 Windows 10 系統當然無法使用。
發現並推薦第三方的功能固然很好,但需要更嚴謹的撰寫,以免會被閱讀者認為是故意黑微軟而黑,因為截圖中還有 NTVDM 安裝失敗的畫面。
謝謝您的指正,已更新內文