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
5 thoughts on “Is it possible to run 16-bit applications in Windows 10?”
I was wondering if you can help me. I have a game that ran on windows 95 but when i try to install on windows 7 64 bit, using troubleshooting compatiblity mode. I get a message that reads “can’t load cadraw.dll”. Would I be able to load this using window 8.1 32 bit and/or windows 10 pro 32 bit. Just a best guess would be appreciated.
It might work. If you are trying to run one of the Sudden Strike games, then I would recommend checking this out: https://github.com/El-Wray/N2CadX
I’m running host Win 10 Pro 64 bit with a Hyper-V VM running Win 10 Pro 32 bit; NTVDM component is installed on the VM.
I’ve tried installing SkyMate Pro 1.05 on the VM straight up and using compatibility for Win 8 and 7 (I have a Win 7 VM that runs on the same host and SkyMate Pro 1.05 works on it) and for all attempts to install SkyMate I get this error: GLBSSTUB caused a General Protection Fault in module ~GL0001.TMP at 0003:4074.
The only option that worked after that was to exit the install.
I have been unsuccessful so far in finding a fix. Do you have any suggestions?
Thanks for your help.
My only suggestion would be to see if you can find the system requirements for SkyMate Pro, and then try to find the difference between your Windows 10 VM and your Windows 7 VM. It could be something as simple as an incorrect .NET version running on the VM.
I run Photosuite 8 bit version from 2001.
It runs smoothly on Windows 7 64 bit version. Is Windows 10 less good.
The only function that does not work straight is copying a photo from anything in windows 7 to photosuite.
But saving the photo and then loading it to phosuite goes well. This works fine even on pictures 1 x 1 meter. And that because 64 is dived by 8 easily.