I ran across this one today when trying to run a 16-bit application on a Windows 2003 Server. I run the app and it pops up a Windows dialog box saying, "System Error : NTVDM encountered a hard error."
Turns out that the environment path for "TEMP" and "TMP" is invalid. Normally these paths resolve to their 8.3 pathname, so an enviromental variable set to %USERPROFILE%\Local Settings\Temp will resolve to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp. On my problem server the path resolves to C:\DOCUME~1\ADMINI~1\Local Settings\Temp, note the space in Local Settings. This mix of long filenames and 8.3 names is invalid.
To resolve the issue, I changed the user TEMP and TMP variables to use C:\TEMP.
NTVDM encountered a hard error
Wednesday, June 13, 2007
by
Jeff Guillet - @expta
at
11:11 AM


- Two clicks for more privacy: The Facebook Like button will be enabled once you click here. Activating the button already sends data to Facebook – see i.not connected to Facebook
- Two clicks for more privacy: The Google+ button will be enabled once you click here. Activating the button already sends data to Google – see i.not connected to Google+
- Two clicks for more privacy: The Tweet this button will be enabled once you click here. Activating the button already sends data to Twitter – see i.not connected to Twitter
Tags
tip,
troubleshooting
Subscribe to:
Post Comments (Atom)
Thanks for the info. It fixed my issue today.
ReplyDeleteThanks. This was very helpful. I had eliminated the other causes. -BenT
ReplyDeletethanks! (server 2003)
ReplyDeletegreat one Jeff! worked for me as well....now I do not get the "ntvdm hard error" , but now the command prompt says...."could not execute xyz.exe"....any clues ?
ReplyDeleteWow....worked like a charm thanks Jeff.....
ReplyDelete...."could not execute xyz.exe"....
ReplyDeletethe file path name is proablly still too long..you need to move the install file closer to the root of C:
for example: C:\TEMP\setup.exe
instead of
C:\documents and settings\username\desktop\folder\setup.exe
You are da man!
ReplyDeleteWe had this hard error message when trying to print from a 16 bit program ... turned out to be the wrong printer set as the default. The printer set as default was no longer on the domain...
ReplyDeleteI just solved one another variant of this problem. I used ProcessMonitor to find suspicios actions and the steps vere these:
ReplyDelete1.,In registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\VirtualDeviceDrivers there was a reference to virtual drive driver "rnbovdd.dll". This file was not on the drive => clear the value in regedit. This was probably the biggest problem.
2., In C:\Windows\Fonts the files vga852.fon, vgafixe.fon and vgasyse.fon were missing they are referenced from registry HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize. Microsoft says, these files should be in dllcache so I copied them there too. See http://technet.microsoft.com/en-us/library/cc939631.aspx
3., The Path in Environment variables contained one non existing path. This was probably not the major problem, but still I fixed this.
Thank you for this! I was at a dead end trying to get VB 6 installed on some new servers. This fixed it. It is strange that this doesn't affect the Windows XP boxes. Oh well, I changed the "Local Settings" to "locals~1" and things are great now.
ReplyDeleteThanks for sharing! ^_^