It seems absurd to be talking about 16-bit applications in the year 2018. Even so, I have worked in IT for long enough to know that it occasionally becomes necessary to fire up an ancient application, even if only for the purpose of converting an archived file to a more modern format. In fact, I found myself having to do exactly that earlier this week. So with that in mind, I thought it might be fun to talk about whether or not it is possible to run 16-bit code on Windows 10.
Before I get too far into this discussion, I want to give you a quick spoiler alert. If you are running a 64-bit edition of Windows 10, there does not seem to be a way to run 16-bit applications. When you really stop and think about it, this seems completely logical, as it would mean that a single operating system would have to simultaneously be able to run 16-, 32-, and 64-bit code. If you are running a 64-bit edition of Windows 10, then the only way that I know of to run 16-bit applications is to install an alternate operating system into a Hyper-V virtual machine.
Running 16-bit applications? Let's experiment
But what if you have a 32-bit edition of Windows 10? In an effort to find out, I installed a 32-bit edition of Windows 10 onto a Hyper-V virtual machine. You can see the particulars of the operating system in the figure below.
Once I got a 32-bit edition of Windows 10 up and running, I went into the attic and dug out the oldest application that I could find that wasn’t on a floppy disk. The application of choice is called MGI Photosuite. It is a lightweight graphical editor that I used to use frequently back in the day. As you can see in the next figure, the application files are about 22 years old. This was one of the oldest applications that I could find.
If I attempt to run the application on a 64-bit version of Windows 10, I am presented with a message that simply says that the app can’t run on the PC.
NTVDM to the rescue
If I try to run the app on a 32-bit copy of Windows 10 however, I get a message indicating that I need to install NTVDM. In this case, the dialog box actually gave me the option of installing NTVDM, which kind of surprised me, because in the past I have had to install this feature manually.
In case you are not familiar with NTVDM, it is the NT Virtual DOS Machine. This is a fancy way of saying that the NTVDM component provisions Windows 10 with a 16-bit subsystem through the use of virtualization. You can easily install this component yourself by using the Windows Control Panel. Just open the Control Panel, go to Programs, and click Turn Windows Features on or off. You can find NTVDM listed in the Legacy Components section, as shown in the image below.
Incidentally, NTVDM does not exist in 64-bit editions of Windows 10, as illustrated in the next image. That’s why you can’t run a 16-bit application in a 64-bit Windows 10 OS.
After installing the NTVDM component, you should be able to execute the 16-bit code. As you can see below, I was able to run the Setup wizard for MGI Photosuite on Windows 10.
If you look back at the previous paragraph, you will notice that I used the phrase “you should be able to execute 16-bit code” not “you should be able to run the 16-bit application.” There is a big difference between the two.
Miracles can happen
In this case, the application ran without issue. That in itself is a bit of a miracle. After all, this particular application was created at a time when Windows 95 reigned supreme. Normally an application that is that old will put up a bit of a fight when you try to run it on a modern OS. Even if you are able to execute the application code, the application is likely to produce errors because it was never designed to run on Windows 10.
So what happens if your legacy application does not want to play nice with Windows 10? Microsoft actually provides a way for you to shim the application to make it (hopefully) run correctly. The basic idea behind this technique is to make the application think that it is running on an older operating system. On a side note, the technique that I am about to show you can be used regardless of whether the application is 16-bit or something a bit newer.
If you are experiencing application compatibility problems, right click on the executable file, and choose the Troubleshoot Compatibility command from the shortcut menu, as shown below.
The Program Compatibility Troubleshooter can be used to adjust the application’s permissions, color set, or even to trick the application into thinking that it is running in a different version of Windows. With a little bit of tinkering, most applications can be made to run.
Yes, you can!
Running ancient software probably isn’t the sort of thing that you would do on a regular basis. Even so, it is nice to know that Windows 10 is able to run extremely old applications if the need arises. The trick is to make sure that you are using a 32-bit edition of Windows 10 because 64-bit editions lack the NT Virtual DOS Machine feature that allows legacy 16-bit applications and to run.
Featured image: Shutterstock