Otvdm/winevdm: run old Windows software in 64-bit Windows


A method for running 16-bit Windows programs in 64-bit Windows

Applications written for Windows 1.x, 2.x, or 3.x, and some programs written for Windows 95 or Windows 98 or Windows Me, cannot run in 64-bit Windows because 64-bit Windows has no support for 16-bit applications.

A programmer who calls himself or herself otya128 has adapted the Wine ("Wine Is Not an Emulator") software into a system called winevdm (also otvdm) so that old Windows programs (including installation programs) can run in 64-bit Windows as if they were ordinary modern Windows programs. With this system installed, you can simply double-click on these old Windows programs and launch them in the same way that you launch modern Windows programs. Under this system, these old programs can open files in the same way that modern Windows applications do, and many (but not all) applications that were designed to send data to a printer can print to any Windows printer. Some visitors seem to think I wrote otvdm; it is not my work; it was written by the programmer who uses the name otya128.

If you need help with this system, do not ask me, because I do not know the answer! Create an "issue" report at the GitHub page for this project.

Note: Some simple DOS (non-Windows) programs can run by entering the command "otvdm <dosprogram.exe>" (use the actual name and no quotation marks) from the otvdm folder. For anything more complicated, you'll need vDos or some variety of DOSBox.

The easiest way to install OTVDM is to go the Releases page on its Github site. Find the version marked "Latest", download the zip archive listed under Assets, and extract it to any convenient folder (for example C:\OTVDM). Then double-click on "Install (no console)" and run the installer. That is all you need to do.

If for some reason your 16-bit application doesn't work with the latest release version, you may download the most recent experimental build of the software from this AppVeyor page, by following these links on the page: click "Jobs", then "Environment: THIS_BUILD_IS_RECOMMENDED [etc.]", then "Artifacts" (at the right, above the blue screen image), then download the zip file named "otvdm-master-###.zip". Extract the files to a convenient folder (for example, C:\OTVDM) and click on Install.

You do not need it, but, if you want, you can download an OTVDM installer that I created for a recent (June 2024) version of otvdm. It runs under Windows 10 or 11; not under earlier versions. My installer will never be as up-to-date as the version you can find on the AppVeyor page linked above, which includes an installer. Please do not waste your valuable time (as one visitor did) by sending me e-mails telling me that I should update my installer. And, before you download, read the paragraph below that begins "Virus detection"!

ARM-based Windows: The installer linked in the preceding paragraph makes it possible to install OTVDM in the ARM version of Windows running (for example) in Parallels Desktop under macOS, or in an ARM-based PC. This support is experimental. It automates the procedure described on this Github page.

My installer offers to install the system into a folder named OTVDM in the root of your system drive (typically C:), but you can select or create any other folder that you may prefer. After installing the system, you can update it with the latest release of the system by downloading the new release from the AppVeyor page linked above and copying its contents into OTVDM folder, overwriting the existing files. But keep this in mind when installing or reinstalling: If you have already installed otvdm/winevdm using this or any other installation method, my installer will prompt you before it overwrites your otvdm.ini and otvdm\windows\system.ini and otvdm\windows\win.ini files. If you let my installer overwrite these files, you may need to install your 16-bit Windows applications again. Back up your otvdm system before reinstalling! My installer offers to open the otvdm.ini file for editing. I strongly recommend that you open that file and read its contents. Some applications (e.g. XyWrite for Windows) will not run unless you enable the option to limit font enumeration.

The installer also creates (or updates) a registry key, HKCU\ENVIRONMENT\PATH16, with a setting that allows 16-bit applications to find DLLs installed into the OTVDM Windows and Windows\System folders.

Show 16-bit icons in Explorer (Intel only, not ARM): The installer offers to run a small program (created by the author of otvdm) that allows icons of 16-bit programs to appear in Windows Explorer, instead of appearing with generic icons. I strongly recommend that you accept the option to run this program (which only needs to be run once). It seems to have no ill effects, only benefits.

Virus detection: Some anti-malware programs will report that my installer contains malware; this is to be expected with software that goes fairly deep into the operating system, as otvdm does. If you don't trust my software, don't use my software! Find something else instead! If you want expert opinions, I recommend uploading the installer to sites like virustotal.com or metadefender.opswat.com. When I uploaded the installer to these sites, 15 out of 71 engines at VirusTotal and zero out of 12 engines at MetaDefender reported the installer as a threat - but MetaDefender's "Sandbox" testing reported that a 75 percent likelihood that the installer is malicious. It is entirely your choice what to do with results like these. Please do not waste your extremely valuable time sending me an e-mail reporting that your malware program detected a virus; I already know that it detects a virus. Also, do not waste your extremely valuable time asking if the installer is safe. If you don't trust it, don't use it!

Important note: The installer described above differs from a standard installation of otvdm/winevdm by offering to copy into the otvdm folder a program named FileOpen.exe that acts like the Windows start command (it runs applications or opens files). An option in the installer lets you make a copy of FileOpen.exe with the filename command.com; this option may make it easier to use 16-bit programs that launch other programs or DOS programs.

Moderately important note: The installer also installs a 7z archive, isfixload.7z containing a file isfixload.exe that acts as "shim" dsigned to prevent errors when running an InstallShield installer for old Windows programs or games. You can read the details here. Because malware software detects the exe file as dangerous, you will need to install it by hand if needed. Extract it from the 7z archive (using 7z.exe or similar 7z-compatible software); then modify otvdm.ini to set the compatibility mode for the "shim"; you need not do anything else to make this work correctly.

Alternatively, if you want to run a full Windows 3.1x environment, you can use my Win31DOSBox system, but you probably do not need it.


Use 16-bit programs for OLE linking

(This paragraph is based on information provided by Lennart Lindfors.) You can use a 16-bit application as an OLE server in applications that include an Insert->Object menu. Use regedit.exe to open the Windows Registry for editing. Find every instance of the path of your 16bit application, and change it as in the following example. In the registry, replace all instances of  c:\pathto\your16bit.exe  with something like the following (also, if necessary, replacing C:\otvdm  with the actual path of your installation).

c:\otvdm\otvdmw.exe "c:\pathto\your16bit.exe"


Printing from 16-bit programs

Many applications will print to the same printers that you have installed in 64-bit Windows. The following notes may be useful in special situations.

WordPerfect 5.x for Windows. Do not use or install the WordPerfect printer drivers. Use the option in WordPerfect that prints using Windows printer drivers. You may need to experiment. Some Windows printer drivers will cause errors; other drivers, like the default PCL6 driver for my HP LaserJet, will print correctly.

XyWrite for Windows. See a separate page for advice on using XyWrite for Windows.

If your 16-bit application can't work with current Windows printer drivers, or can't print for any other reason, you can use my PrintFilePrinter program, described on another page.


Edward Mendelson (edward [dot] mendelson [at] columbia [dot] edu)