leecher1337 / ntvdmx64

Run Microsoft Windows NTVDM (DOS) on 64bit Editions
804 stars 81 forks source link

Can't run DOS/WIN16 app #154

Open thefirefox12537 opened 2 years ago

thefirefox12537 commented 2 years ago

I did installed NTVDMx64 and it works, after i logged to COMMAND.COM i can't run a DOS/WIN16 app. So i modificated AppInit.dll registry remove the first space and reboot. All of that can't be run yet. How to fix that?

gambar

thefirefox12537 commented 2 years ago

gambar

leecher1337 commented 2 years ago

If there is a problem launching a DOS-Application from console window, it could be that the ldntvdm.dll loader didn't get injected into the cmd.exe process properly. To check if this is the case, just retry to launch the DOS application after you received the error message on the same prompt. The reason why this works, is, because the error dialog loads user32.dll which in turn triggers AppInitDLLs and injects the loader into the running process. Even though the loader should also inject by other facilitys, this at least is a workaround.

If ntvdm.exe crashes on launching a 16bit application, it could be that wow32.dll and user.exe didn't get replaced properly in Windows\SysWOW64 directory and the original copies that got shipped with Windows are still present there. So compare them with the wow32.dll and user.exe shipped with NTVDMx64 installation package and if they do not match, overwrite the ones in SysWOW64 directory with the ones from NTVDMx64 installation package.

thefirefox12537 commented 2 years ago

If there is a problem launching a DOS-Application from console window, it could be that the ldntvdm.dll loader didn't get injected into the cmd.exe process properly. To check if this is the case, just retry to launch the DOS application after you received the error message on the same prompt. The reason why this works, is, because the error dialog loads user32.dll which in turn triggers AppInitDLLs and injects the loader into the running process. Even though the loader should also inject by other facilitys, this at least is a workaround.

If ntvdm.exe crashes on launching a 16bit application, it could be that wow32.dll and user.exe didn't get replaced properly in Windows\SysWOW64 directory and the original copies that got shipped with Windows are still present there. So compare them with the wow32.dll and user.exe shipped with NTVDMx64 installation package and if they do not match, overwrite the ones in SysWOW64 directory with the ones from NTVDMx64 installation package.

I already deleted older symbols and manually injected with symfetch finally DOS program works run, and now NTVDM still crashed how to replace user.exe and wow32.dll?

MrPepka commented 2 years ago

It's the same for me. NTVDM crashes when trying to start a DOS application. I replaced wow32.dll and user.exe with those from the NTVDMx64 installation package

thefirefox12537 commented 2 years ago

It's the same for me. NTVDM crashes when trying to start a DOS application. I replaced wow32.dll and user.exe with those from the NTVDMx64 installation package

I already replace wow32.dll and user.exe from installation package to SysWOW64. It's result still same error

suspenser-github commented 2 years ago

Hi, I have a similar issue when launching a 16-bit Windows app, which is the main app of a software package (a PLC programming software) consisting of several 16-bit and 32-bit apps. I downloaded a NTVDMx64 installation package from http://www.columbia.edu/~em36/ntvdmx64.html, installed it through install.bat on my Win10 Pro 21H2 build 19044.1415 PC, rebooted the the PC and launched the 16-bit Windows app by double clicking on it, and NOTHING happened, i.e. NO message or messages of any kind. Repeatedly launched the app without success. Nothing was seen in the Task manager and Event Viewer. Internet connection was on.

Rebooted Win10 Pro and then launched CALC.exe, a small 16-bit Windows app, which is used by winevdm/otvdm to convince people, that it works fine (which unfortunately is NOT the case). The app's window appeared and the app worked. Then I closed the app and started it again but now NOTHING was seen as in the previous app. I started it again and again but still the same issue.

What I am doing wrong? Could anyone help?

Thanks for considering my request.

thefirefox12537 commented 2 years ago

Hi, I have a similar issue when launching a 16-bit Windows app, which is the main app of a software package (a PLC programming software) consisting of several 16-bit and 32-bit apps. I downloaded a NTVDMx64 installation package from http://www.columbia.edu/~em36/ntvdmx64.html, installed it through install.bat on my Win10 Pro 21H2 build 19044.1415 PC, rebooted the the PC and launched the 16-bit Windows app by double clicking on it, and NOTHING happened, i.e. NO message or messages of any kind. Repeatedly launched the app without success. Nothing was seen in the Task manager and Event Viewer. Internet connection was on.

Rebooted Win10 Pro and then launched CALC.exe, a small 16-bit Windows app, which is used by winevdm/otvdm to convince people, that it works fine (which unfortunately is NOT the case). The app's window appeared and the app worked. Then I closed the app and started it again but now NOTHING was seen as in the previous app. I started it again and again but still the same issue.

What I am doing wrong? Could anyone help?

Thanks for considering my request.

I also think the same, this DOS program can run well on NTVDM even though it's a bit tricky buggy. However, opening a 16-bit Windows program can't run, using OTVDM/WineVDM can and normally.

leecher1337 commented 2 years ago

Are you using the most recent versions? The ones from columbia.edu are not up-to-date. i.e. https://github.com/leecher1337/ntvdmx64/commit/7d52d2995e71eb455d482155503c0471aef65294 issue could be the cause for loader not working correctly.

If you have a just-in-time debugger in place (i.e. x64dbg registered as a JIT debugger), you can analyze crashes in NTVDM, should they occur. DebugView from Sysintenrals will output actions from the loader that you can check, i.e. if it launches NTVDM.EXE correctly. New version also has debug symbols in release-package, so that it is easier to debug certain components as you have PDB symbols in place.

suspenser-github commented 2 years ago

Thank you for your quick reply. Unfortunately I am not able to find another (i.e. the most recent version) compiled build to download.

I found in \windows\system32 the Microsoft's ntvdm64.dll, which is for 16-bit Emulation on NT64.
Is there any relation with NTVDMx64, and if Not, what is ntvdm64.dll used for?

leecher1337 commented 2 years ago

ntvdm64.dll is from Windows operating system. It's an error handler for 16bit applications, mainly to launch i.e. 16bit installers. NTVDMx64 can be built without much hassle using autobuild, please read the the documentation for details.