Running 16-bit Apps on a modern Windows OS with NTVDM!

So, I have no idea why, but this is by far my most popular YouTube video.

Objectively, this video is awful. What was I recording off of… a Yak Bak? But apparently it’s helping folks so… let’s make a full article on it!

Or maybe you already know all this and are just here for an easy command line option:

dism /online /enable-feature /all /featurename:NTVDM /quiet /norestart

Bah you’re no fun then, I want to wax poetically about Windows components!

If not, or the above command failed, read on!

So you want to run 16-bit apps on modern Windows eh?

Maybe you need to run some older industrial automation or security software. Or maybe, like me, you speedrun or simply play Windows 3.1 games.

What you want is NTVDM!

NTVDM or NT Virtual DOS Machine is a particularly ancient (1993) virtual subsystem that allows 16-bit Windows and 16 and 32-bit DOS programs to run inside a more modern Windows OS. Think of it as a seamless built in virtual machine. It used to be automatically enabled on Windows XP and below, but Microsoft rightly reasoned it was a security concern and started keeping it disabled by default starting with Vista.

Now let’s be up front about this, there’s a major caveat to using this feature – you have to be running a version of Windows that’s 32-bit. There are unofficial alternatives that skirt around this requirement that I’ll discuss later in the article, but if you want native Microsoft endorsed 16-bit application support, you simply must be running a 32-bit version.

That means giving up all but 4 gigabytes of ram – even that in practice is much closer to 3.1 to 3.5gbs after the OS and hardware addresses things on a modern system. This generally relegates this kind of OS install to virtual machines and dedicated specific use machines, because make no mistake, a modern OS does not run well with sub 4gbs of RAM for general use.

Don’t get me started on security concerns either. While it should be comparatively safer to run on modern systems than it was on older Windows versions due to more robust security features, that doesn’t mean it still isn’t risky! Use NTVDM with caution, and preferably in a virtual machine unless you’re absolutely sure you know what you’re doing!

That being said, all modern versions of Windows – that means Windows Vista, 7, 8, 8.1, and 10 – have a 32bit version, and thus have the NTVDM feature available. So yes, you can run Castle of the Winds and other early 16-bit windows programs on Windows 10! Feel free to crack out that boxed retail copy of Vista you have lying around – it’ll finally be good for something. Earlier versions of Windows, like XP and 2000, have NTVDM enabled by default and may in general be more compatible due to better color settings options, but if you simply must have a modern OS running 16-bit stuff here’s how!

Checking your OS version

If you right click on your Start menu (that little Windows symbol in the left corner) and click System near the top of the menu that appears, you’ll be taken to the Windows About page. If it says 32-bit operating system under System type, you’re in luck. You’ve hopefully intentionally installed a 32-bit version. Even if it mentions you have an x64-based processor you’re still good so long as the operating system is 32-bit.

If you see 64-bit operating system, x64-based processor there, you’re out of luck. I’ll list some alternatives later in the article – but keep in mind, these are for advanced folks. If you needed this section of the article you might not be ready for them. I mean no disrespect by this – a few of them could reduce OS security significantly or damage your current OS if used incorrectly, so they’re not for beginners. Looking into Virtual Machines and older OSes might be a safer way to go.

Enabling NTVDM

Okay, so you have the right version to be able to use NTVDM – so let’s enable it!

  1. Press both the Windows key and the R key to pull up the Run utility.
  2. Type optionalfeatures.exe in the Open field and press enter.
  3. In the Windows Features menu that pops up, scroll down to Legacy Components and select NTVDM and select OK.
  4. NTVDM will install, and once it’s finished, you can click Close.

And that’s it, you’re all set! Go run some ancient programs.

NTVDM Alternatives

So you want to have 16-bit programs running on your modern 64-bit Windows. I like you, you’re that spicy type of crazy. Assuming you’re technical enough, you could try the following options, but keep in mind, neither are perfect, and both are open source enthusiast creations. If you’re looking for better compatibility than these can offer, consider running Windows XP in a virtual machine.

WineVDM by otya128 (formerly OTVDM)

If you’re looking to run full graphical 16-bit programs, like those meant for Windows 3.1 and 95, this is likely what you’re looking for. It’s essentially a Wine for Windows fork based solely in porting Wine’s compatibility for 16-bit programs. The compatibility is generally good, but there are a few games I’ve tried that haven’t worked correctly. Looks like there’s many more updates than when I last tried it, so perhaps your mileage may vary. I would recommend trying this one first. If you’re looking for a prebuilt installer, take a look here, near the bottom of the page.

NTVDM x64 by leecher1337

Basically it’s a port from leaked source code, originally using the NT4 code as a starting point. There’s a few different builds, and the new MINNT branch seems to support graphical DOS modes and early windows programs, albeit somewhat slowly. For a pretty detailed write up on this version, look here.

Be aware that NTVDM x64 may require you to turn driver signing off, which is something that can only be done safely on a machine that does not have Secure Boot enabled. That should only be done if you know what you’re doing and understand the risks. It could make your OS significantly less secure if you are a novice, and at worst could make it so that Windows can’t boot!

And that’s it!

Feel free to comment on that Youtube video if you have any questions.