{"id":33178548,"url":"https://github.com/leecher1337/ntvdmx64","last_synced_at":"2025-11-16T08:01:13.442Z","repository":{"id":39526117,"uuid":"60649860","full_name":"leecher1337/ntvdmx64","owner":"leecher1337","description":"Run Microsoft Windows NTVDM (DOS) on 64bit Editions","archived":false,"fork":false,"pushed_at":"2025-08-24T14:04:21.000Z","size":4994,"stargazers_count":881,"open_issues_count":80,"forks_count":85,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-08-24T17:30:21.667Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leecher1337.png","metadata":{"files":{"readme":"readme.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-06-07T22:09:12.000Z","updated_at":"2025-08-24T14:04:24.000Z","dependencies_parsed_at":"2024-04-21T15:09:55.587Z","dependency_job_id":"9ce9de13-200c-426b-ac88-7e8da4fe9d47","html_url":"https://github.com/leecher1337/ntvdmx64","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/leecher1337/ntvdmx64","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leecher1337%2Fntvdmx64","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leecher1337%2Fntvdmx64/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leecher1337%2Fntvdmx64/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leecher1337%2Fntvdmx64/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leecher1337","download_url":"https://codeload.github.com/leecher1337/ntvdmx64/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leecher1337%2Fntvdmx64/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284678558,"owners_count":27045646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-16T02:00:05.974Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-16T03:00:34.216Z","updated_at":"2025-11-16T08:01:13.427Z","avatar_url":"https://github.com/leecher1337.png","language":"C","funding_links":[],"categories":["Windows","\u003ca id=\"b478e9a9a324c963da11437d18f04998\"\u003e\u003c/a\u003e工具","Operating Systems"],"sub_categories":["Containers","\u003ca id=\"1afda3039b4ab9a3a1f60b179ccb3e76\"\u003e\u003c/a\u003e其他","Windows"],"readme":"For the impatient ones, who don't want to read:\r\nntvdmpatch\\doc\\autobuild.txt should be the fastest way to get NTVDMx64 compiled.\r\n\r\nKnown defects\r\n=============\r\nPlease be aware that starting with Windows 11 22H2, support for 16bit \r\nWindows applications (i.e. Windows 3.11 applications) is no longer possible\r\ndue to removal of crucial functions (UserRegisterWowHandlers) from USER32.DLL\r\nand the whole Win16 support relies on this.\r\nYou can still run DOS applications without issues, but for Win16, please use\r\nWineVDM instead.\r\nYou may want to upvote issue  https://aka.ms/AAl858b in MS Feedback hub to\r\nconvince Microsoft to put back these functions.\r\n\r\n\r\nWhat is it?\r\n===========\r\nNTVDMx64 is a port of the well-known Windows NTVDM, which is used by windows \r\nto run DOS-Applications, to 64bit Windows, so that you can run your \r\nDOS-Applications on 64bit Windows too.\r\nThis is a proof-of-concept that it is possible to run the NTVDM on 64bit \r\nWindows and Microsoft was just too lazy to port it over and have disabled it \r\nfor unknown reasons. More specifically, it's a set of patches to the \r\nsourcecode of original Microsoft NTVDM from NT4 in order to work on 64bit \r\nWindows.\r\n\r\nMotivation\r\n==========\r\nThe first question that may come now is: Why porting NTVDM when DosBox is \r\nworking even better and more accurate in x64 Windows.\r\nThere are mainly 2 reasons:\r\n\r\n1) DosBox doesn't have a good interaction with the windows console. \r\nSpecifically it's not possible to start Windows Applications from within the \r\nDOS-programs, redirect their output, and other useful interactions that are \r\npossible with Windows' own NTVDM. \r\nOver time my DOS-Applications have grown to interact with various Windows \r\nApplications and Interfaces and that wouldn't work with DosBox for instance. \r\n\r\n2) Simply as a proof-of-concept that it would technically be possible and to \r\nencourage Microsoft to maybe take my patches and incorporate them into future\r\nWindows releases in order to bring back proper NTVDM Support on x64 \r\n(still x32 is a lot faster because of V86 mode, but on machines with lots of \r\nRAM, which may be required to run x64, there may be use for this).\r\n\r\nHow does it work?\r\n=================\r\nI never thought that it would be possible at all, as NTVDM on Win32 uses V86 \r\nmode of the CPU for fast code execution which isn't available in x64 long \r\nmode.\r\nHowever I stumbled upon the leaked Windows NT 4 sourcecode and the guys from \r\nOpenNT not only released the source but also patched it and included all \r\nrequired build tools so that it can be compiled without installing anything \r\nbut their installation package.\r\nThe code was a pure goldmine and I was curious how the NTVDM works.\r\n\r\nIt seems that Microsoft bought the SoftPC solution from Insignia, a company \r\nthat specialised in DOS-Emulators for UNIX-Systems. I found out that it also \r\nexisted on MIPS, PPC and ALPHA Builds of Windows NT 4 which obviously don't \r\nhave a V86 mode available like Intel x86 has. It turned out that Insignia \r\nshipped SoftPC with a complete emulated C-CPU which also got used by Microsoft\r\nfor MIPS, PPC and ALPHA-Builds. \r\nFor V86 mode, Microsoft implemented some facility called \"Monitor\" which is\r\nthe piece of Software that interacts with the V86 part in the NT Kernel.\r\nHowever they assumed that i386 build = built with Monitor, therefore the\r\nsourcecode had to be patched to distinguish between a i386 build with CCPU\r\nand one with MONITOR. \r\nBut there are a lot of other pitfalls too, which are to overcome. One major\r\nproblem is that NTVDM uses calls to the Console and CSRSS Subsystem which\r\nare only used by the NTVDM and are therefore not working out of the box on\r\nx64 systems. Also stuff like Page allocation granularity poses a problem to\r\nEMM memory management on x64 systems. \r\nAnd last but not least, the way NTVDM is invoked is rather complicated, \r\nbecause it is done by the loader code of kernel32/kernelbase which registers\r\nthe NTVDM and the requested application with the console server and the\r\nbuilds a commandline to execute NTVDM with the appropriate parameters\r\n(when I have more time, I may write how this all works in more detail).\r\nBut fortunately as there still are 32bit Versions of Windows, Microsoft still\r\nhas the code available in their x64 Windows Versions, as they are compiling\r\nthe same codebase as on Win32. This enables us to use these facilities also\r\non 64bit Windows, but structures have to be converted forward and back\r\nbetween 32bit and 64bit structures as NTVDM is 32bit code and therefore\r\nruns inside WOW64. WOW64.dll generally has transformations for a lot of \r\ncalls by 32bit applications, but Microsoft didn't implement the ones that are\r\nnecessary for NTVDM (as they are just used by this one application).\r\nAdditionally they broke some functions on x64 builds simply by introducing\r\nbugs or not properly converting them, i.e. for console graphics.\r\n\r\nSo all these difficulties require the system to be patched in order to\r\nsupport the calls of NTVDM and let it load properly with the CCPU.\r\nOne solution would be binary patches of the Windows system files, but this\r\nis problematic as these files can change with various upgrades and there is\r\nalso a nasty Patchguard in Windows which doesn't allow system files to be\r\nmodified. Therefore the way to go here is a DLL that gets loaded into every\r\nprocess and patched the operating system DLLs in memory right after loading\r\nthe application. The patcher also has to replicate between 32bit and 64bit\r\nprocesses which is another challenging task.\r\nThe method that has been chosen by me is creating 2 DLLs, one for 32bit and\r\none for 64bit (as they required different code for replication and \r\nmodification). These DLLs get loaded into every process as AppInit-DLL, which\r\nis a nice mechanism by Windows that allows DLLs to be injected into every\r\nGUI process.\r\nUnfortunately these DLLs nowadays have a signature enforcement in order to\r\nget loaded, but this can be turned off in registry. As far as I know this\r\nonly works if \"Secure Boot\" is off OR if Windows is in Testsigning mode, \r\nwhich therefore is a requirement for this all to work.\r\nStarting with Windows 11, \"Secure Boot\" cannot be disabled out of the box,\r\ntherefore we use AppCert.DLL approach on Win 11 loader.\r\nFortunately, the Windows 11 loader can also be used under Windows 10, so\r\nit is now possible to also use ntvdmx64 without Secure Boot.\r\nAppInit-DLLs only get injected to GUI processes by the \r\nCSRSS, but injection is also required into CLI processes as these are even\r\nmore likely to launch a DOS application. Therefore the AppInit-DLL also has\r\nto invade the console server and inject into created console applications\r\nfrom there (WinEvent hook).\r\nOf course this mess could be all avaoided if Microsoft would implement all\r\nthe required patches from the AppInit-DLL into their WOW64 and into NTDLL\r\n(which wouldn't hurt anyway). Further technical details will be provided \r\nlater.\r\n\r\nWith the help of the mentioned AppInit hook loader it is possible to start \r\nthe NTVDM when a user tries to launch a DOS-Application.\r\nThe NTVDM.EXE has to reside within SYSTEM32 and SysWow64 directories, as\r\nit gets searched and called from 32- and 64bit appliations. As NTVDM.EXE\r\nis a 32bit application, all its support files need to be in SysWow64 \r\ndirectory as this is the SYSTEM32 directory seen by 32bit applications.\r\n\r\nFuthermore the way how the windows console works changed with Windows 7.\r\nIn earlier times, this was all managed by the CSRSS, but nowadays it is done\r\nwith the conHost.exe Console host process, which processes the calls to the\r\nconsole. The calls are transparent for the caller, so this shouldn't be a\r\nproblem, but there are 2 different ConHost DLLs that implement 2 versions\r\nof the console server. Only version 1 of the Console supports direct console\r\nI/O by the NTVDM. On Windows 10 for instance, a registry entry forces the\r\nconhost to use Console V2, so this has to be changed to use V1 console so \r\nthat NTVDM can interact with it, but this fortunately is just a matter of\r\nsetting a registry key.\r\n\r\nSome registry keys also need to be set to show that the NTVDM is present and\r\ncan get called. \r\nSo this is all rather complex, but it sort of works with some patches to \r\nthe operating system. It's enough as a proof-of-concept and to use it for \r\nmost business applications and even some games.\r\n\r\nCool, where can I get it?\r\n=========================\r\nRedistribution of the compiled NTVDM is probematic, as it is based on leaked\r\nWindows NT 4 sourcecode, which is (C) by Insignia and Microsoft, so I'm\r\nlegally not allowed to redistribute the code.\r\nHowever I published the code and compiled versions of the loader that \r\nenables you to run the patched NTVDM, as this is my own code.\r\nAs the OpenNT project released the sourcecode, copyright issues are up to\r\nthem, I can just say that you need the old-src.trunk.r687.20150728.7z\r\nsource package released by them (Google and web.archive.org are your \r\nfriends) if you want to try it out. \r\nDepending on the build flavour you choose, you also need the appropriate\r\nSDK package.\r\nI'm providing patchfiles that patch the sourcecode to compile your own\r\nversion of NTVDM which works on x64, publishing patches shouldn't be a \r\ncopyright issue, I hope. And therefore you can try to patch the source \r\nand compile it yourself.\r\nOf course it would be nice if Microsoft would do that themselves to provide\r\nx64 Windows users a NTVDM again, but I'm not very positive that this \r\nwill happen, they seem to forget about us DOS-users. :-(\r\n\r\nThere are various \"flavours\" of NTVDM that can be built:\r\n * old-src  [!DO NOT USE!]\r\n   The original NT4 NTVDM. Maybe the easiest version to build, but\r\n   it doesn't have multilanguage and lacks some features like LFN\r\n   This has been the default repository until Feb/2020 where \r\n   development has been switched to MINNT tree.\r\n   This build method therefore is DEPRECATED in favour of the \r\n   MINNT build systemand will not receive any future updates!\r\n   This build is left unmaintained and unchecked, so don't complain\r\n   if it doesn't build anymore.\r\n   Please note that you need Windows XP for building.\r\n   Build instructions in: doc\\old-src.txt\r\n * HAXM\r\n   Instead of using the emulated CCPU, it uses HAXM VT-x hardware \r\n   accelleration (CPU needs to support it), so it is significally \r\n   faster in textmode.\r\n   But it will probably never support graphics, as it is technically \r\n   impossible to emulate a real VGA card with sufficient performance on VT-x\r\n   Works with minnt and old-src build.\r\n   Build instructions in: doc\\haxm.txt\r\n * MINNT\r\n   This is the most recent NTVDM source code, it supports multiple\r\n   languages, but is probably harder to build.\r\n   It is planned to continue development on this source tree as of\r\n   Feb/2020\r\n   Build instructions in: doc\\minnt.txt\r\n\r\nTo make building easier, there is an automated build system available.\r\nPlease refer to doc\\autobuild.txt for details.\r\n\r\nIn case you want a fully compiled build, I recommend Googling for ntvdmx64\r\n\r\nHow to install\r\n==============\r\nNow you can install the NTVDM on the destination machine:\r\nRun install.bat so that all files will be installed on \r\nthe target machine and Registry patches will get applied.\r\nAfterwards you may need to reboot the machine to get the AppInit-DLL loaded\r\ninto explorer, but it should already get loaded into the next GUI process\r\nyou start (as long as it's a loader based on AppInitDLLs which is true for\r\nWindows Versions \u003c10 and Windows 10 with Secure Boot disabled), \r\nso if you start a DOS-Application from this process, it should also work.\r\n\r\nYou must also ensure, that the machine is connected to the Internet during \r\nthe first run of a DOS-Application, because the loader code needs to fetch\r\nsymbols from the Microsoft Symbol server so that it can call OS internal\r\nfunctions in order to properly start NTVDM. When the symbols are once \r\nfetched for the current user, they won't be fetched again, until either\r\nthe Temp-folder is cleared or the OS files are upgraded.\r\n\r\nDebugging\r\n=========\r\nName of debugger Master Yoda is.\r\nCompiling frontend in mvdm\\softpc.new\\debugger you do.\r\nLike Gandalf, debugger master Yoda smokes pipe in \\\\.\\pipe\\softpc\r\nTherefore writing REG_SZ Key named PIPE containing\r\n   \\\\.\\pipe\\softpc\r\nto HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\WOW\\CpuEnv\r\nyou need.\r\nSetting empty REG_SZ named TRACE to CpuEnv you must.\r\nAfter running vdmdebug.exe, you will be enlighted by running vdmdebug.\r\nDo not call Yoda, Yoda will call you.\r\n\r\nTracing DOS applications\r\n------------------------\r\nPrereq:\r\n1) You need to have installed the checked build\r\n2) You may want install the debug symbols by running inst-sym.cmd \r\n   from installation directory.\r\n3) Do not run multiple NTVDM-instances, that will not work, you only\r\n   have one NTVDM with one debug-connection to vdmdebug.exe\r\n\r\nWhen you first break into YODA, you may want to enable symbolic \r\ndebugging to get at least a hint where in the code you are.\r\nFor that, run:\r\n\r\n.sxe cd\r\n.r\r\n\r\nWithout .sxe cd, there is not DOS task creation hook and thus no\r\nsymbol lookup possible.\r\n.r uses VDMEXT's tracing routine which supports symbol lookup.\r\n\r\nIf you want to trace through a DOS application and log it to a file, \r\nafter entering above commands, you may want to:\r\n\r\ntf c:\\trace.txt\r\nt\r\nluke\r\nc\r\n\r\nKnown bugs\r\n==========\r\nCurrently there are crashes with some DPMI programs like i.e\r\ndpmi.exe, but most programs should work, I hope.\r\n\r\nTested on\r\n=========\r\nWindows Server 2003 x64\r\nWindows 7 x64\r\nWindows 8 x64\r\nWindows Server 2008 x64\r\nWindows 10 x64\r\nWindows 11 x64\r\n\r\nYou are invited to improve this project to bring back DOS to Windows.\r\n\r\n\r\nFAQ\r\n===\r\nNTVDMx64 stops working after Patch Tuesday updates, what shall I do?\r\n---------------------------------------------------------------------------\r\nIt always takes some time (up to 7 days) after new symbols for updated dll\r\nfiles required by the loader get released.\r\nSo the only thing you can do in such a situation is to wait until the new\r\nsymbols appear. The loader should start working again automatically, after\r\nthe symbols become available and you have an Internet connection available\r\nthat allows downloads from the Microsoft Symbol Server.\r\n\r\nYou can verify if the missing symbols are the problem by checking the\r\nloader output via DebugView.\r\n\r\nAdditionally, it's a good idea to execute reload-symcache.cmd from the \r\nrelease-directory in order to delete the symbol cache of the NTVDM loader, \r\nas it sometimes becomes out of sync and starts acting weird, so this will \r\nensure that it reloads all the symbols.\r\n\r\nI want to have a proper soundcard emulation\r\n---------------------------------------------------------------------------\r\nMINNT build supports AdLib soundcard emulation by incorporating code parts\r\nof SoundFX2000 into NTVDM SB20 emulation.\r\n\r\nTo make it more clear: \r\n  As MUSIC device, select AdLib\r\n  As SOUND device, select Soundblaster 2.0\r\n\r\nBut you can also try to use the real\r\n\r\nhttp://www.softsystem.co.uk/products/soundfx.htm\r\n\r\nTo remove time limit (as it's free nowadays anyway), please\r\nsee:\r\nhttps://github.com/leecher1337/ntvdmx64/issues/40#issuecomment-510697281\r\n\r\nBut it sometimes causes applications to hang and not react to keyboard\r\ninput, so only try it if the NTVDM internal sound emulation isn't good \r\nenough for your needs.\r\n\r\n\r\nThe PC speaker output is choppy and generally inaccurate, I want my PC\r\nspeaker sound back\r\n---------------------------------------------------------------------------\r\nThis is not NTVDMx64's fault, it is related to a bad design change in \r\nWindows starting with Windows 7.\r\nIt can be solved by installing a proper PC Speaker driver:\r\nhttps://www.vogons.org/viewtopic.php?f=46\u0026t=58233\r\n\r\n\r\nI want to run 16bit Windows applications\r\n---------------------------------------------------------------------------\r\nAs of 05/2020, NTVDMx64 now generally supports WOW32, so your applications \r\nshould run.\r\nHowever, they currently only work with the CCPU build and we know that the\r\nCCPU is slow, so I still recommend wineVDM:\r\n\thttps://github.com/otya128/winevdm\r\nThe loader tries to detect if winevdm is installed and if so, it gets\r\nprecedence over NTVDMx64. If you restore original registry entries, WOW32\r\nwill be handled by NTVDMx64 again.\r\nThe crucial registry key for the check is:\r\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NtVdm64\\0OTVDM\r\nIf it is present, NTVDMx64 won't load its WOW32 implementation.\r\nPlease note, that detection of the key is done upon inital load of ldntvdm.dll\r\ninto the process address space, so if you toggle the 0OTVDM, the process where\r\nyou are launching your 16 bit application from needs to be restarted.\r\nIf unsure, you can reboot your machine after installation/uninstallation of\r\nWineVDM handlers.\r\n\r\nTo debug wow32, before launching your application:\r\nset WOWTRACE=C:\\log.txt\r\nset WOWLOGLVL=16\r\n\r\nFor more detailled information about debugging, please refer to \r\ndoc\\debug-wow.txt\r\n\r\n\r\nIs there a way to enlarge the graphics window?\r\n---------------------------------------------------------------------------\r\nYou can use the EyeStrain parameter for this.\r\nJust execute reg\\eyestrain.reg from the release-folder of NTVDMx64 and\r\nas soon as the parameter is set, you can switch between 3 variants of\r\ngraphics display (Standard - Big - Huge) by pressing the \"Scroll Lock\" key.\r\nThis only works in graphics mode!\r\n\r\nHere is how it works:\r\nThe .reg file creates a REG_SZ key named \"EyeStrain\" under\r\nHKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\WOW\\CpuEnv\r\nwhich contains the string representatino of a hex value of the VK_\r\nvirtual key code that needs to be checked for in order to switch between\r\nmagnificaton sizes. The .reg file contains \"91\" as value, as 0x91 is the\r\nVK_SCROLL.\r\nYou can find a list of Virtual keycodes here and change it accordingly:\r\nhttps://nehe.gamedev.net/article/msdn_virtualkey_codes/15009/\r\n\r\nFurther explanation how it used to work on MIPS/Alpha builds:\r\nhttps://github.com/leecher1337/ntvdmx64/issues/95#issuecomment-637202206\r\n\r\n\r\nI want to use more than 16MB of DPMI memory\r\n---------------------------------------------------------------------------\r\nNTVDM is patched to obey DPMI memory size from .PIF file. However, its size\r\nis limited to maximum of 64MB due to .PIF specification. If you want to\r\nuse more, you must set a registry key under:\r\n\r\n  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\WOW\\CpuEnv\r\n\r\nCreate a REG_SZ value named DPMIMEM with the requested size of DPMI memory\r\nin KB, i.e. 131070 for 128MB of DPMI memory max.\r\n\r\nYou can just execute the reg\\dpmimem.reg from the release-folder of NTVDMx64\r\nto set 128MB of DPMI mem.\r\n\r\n\r\nI want to use my mouse in my textmode application and not select text \r\n---------------------------------------------------------------------------\r\nYou forgot to disable QuickEdit mode of the windows console.\r\nSee: https://github.com/leecher1337/ntvdmx64/issues/80\r\n\r\n\r\nWhen launching a DOS program from a user's console, it doesn't start on\r\nfirst launch and on second launch, I get System Error 4001h\r\n---------------------------------------------------------------------------\r\nThis is due to the fact that the ForceV2 key of the Windows console is on\r\na per-user basis, not systemwide, so it resides in HKEY_CURRENT_USER\\Console\r\nDo you need to set the DWORD ForceV2 key in mentioned path to 0.\r\n\r\nYou can just execute reg\\conhost.reg from the release-folder of NTVDMx64\r\nas the correct user to fix that key.\r\n\r\n\r\nIt seems that my applications crash randomly i.e. on launching NTVDM and\r\nI see weird behaviour (possibly after a Windows update). I suspect bad \r\noffsets in the Symbol Cache, how can I refresh the NTVDM symbol cache?\r\n--------------------------------------------------------------------------\r\nRun reload-symcache.cmd from the release-directory to tell the loader to\r\nreload all required symbols.\r\n\r\n\r\nI want to use WSL (Windows Services for Linux), but it doesn't work due to\r\nthe requirement for ConhostV2, however NTVDMx64 enforces ConhostV1.\r\nHow can I use WSL and still use NTVDMx64?\r\n--------------------------------------------------------------------------\r\nIf you can live with the shortcoming that you cannot directly launch a \r\nDOS application on the new console (i.e. from cmd.exe shell), but let it \r\nopen up in a new console, you can revert the default console host setting \r\nby  executing reg\\conhostv2.reg from the release-folder of NTVDMx64\r\nto revert that key to Windows default (ConhostV2).\r\nIt is also possible to switch between consoles with conhost.reg for\r\nclassic console (NTVDMx64 compatible) and new console with conhostv2.reg\r\nSo i.e. to execute WSL, execute conhostv2.reg prior to starting WSL\r\nand afterwards, revert it with conhost.reg.\r\nIt seems that there are currently no plans to implement conhostv1 \r\nfunctionality into conhostv2 by Microsoft, unfortunately, leaving us with\r\nthis workaround as the only option.\r\n\r\n\r\nEven after uninstalling NTVDMx64, I cannot use WSL anymore due to classic\r\nconsole being enforced. What can I do?\r\n--------------------------------------------------------------------------\r\nSee question above.\r\n\r\n\r\nI want to print to my windows GDI printer or a network printer\r\n---------------------------------------------------------------------------\r\nUse DOSPR.ZIP, see here: https://github.com/leecher1337/ntvdmx64/issues/161\r\n\r\n\r\nI have trouble printing to a printer which has been redirected via \"net use\"\r\n---------------------------------------------------------------------------\r\nYou may need to use SMBv1 and disable SMBv2.\r\nSee:\r\nhttps://github.com/leecher1337/ntvdmx64/issues/161\r\nhttps://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3\r\nI still suggest you use DOSPR.ZIP\r\n\r\nPrinting to a printer attached to the LPT port doesn't work on Win11\r\n---------------------------------------------------------------------------\r\nEnable plug\u0026play, see:\r\nhttps://github.com/leecher1337/ntvdmx64/issues/245\r\n\r\n\r\nI want to completely disable error messages regarding direct disk access etc.\r\n---------------------------------------------------------------------------\r\nThere is a non-standard extension as this feature was requested by a user.\r\nUnder\r\n\r\n  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\WOW\r\n\r\ncreate a new REG_DWORD value called TlsDirectErrorDefault\r\nThere you must use a bitmask which error messages you want to suppress\r\n(OR the values together):\r\n\r\nHex Flag               An application has attempted to....\r\n-------------------------------------------------------------------------\r\n1        D_A_FLOPPY,   \"directly access an incompatible diskette format\"\r\n2        D_A_HARDDISK, \"directly access the hard disk\"\r\n4        D_A_DRIVER,   \"load a 16-bit Dos device driver\"\r\n8        D_A_ILLBOP,   \"perform an unknown internal 'BOP' opcode\"\r\n10       D_A_NOLIM,    \"allocate Expanded Memory\"\r\n20       D_A_MOUSEDRVR \"use a third party mouse driver\"\r\n\r\ni.e., if you want to suppress the first 2 errors, set it to 3.\r\n\r\n\r\nI have a HASP/HARDLOCK dongle for my DOS application and want to get it\r\nworking with NTVDMx64\r\n---------------------------------------------------------------------------\r\nUse the HASPNT64 driver: https://github.com/leecher1337/haspnt64\r\n\r\n\r\nWhy doesn't QUAKE work?\r\n---------------------------------------------------------------------------\r\nSee: http://www.delorie.com/djgpp/v2faq/faq18_6.html\r\n\r\n\r\nAre there any documents that describe the inner workings of the NTVDM \r\nsubsystem?\r\n---------------------------------------------------------------------------\r\nNot much documentation available, but this slide may be interesting to you:\r\nhttps://web.archive.org/web/20230822011131/https://documents.pub/document/2013-syscan360-wang-yuntvdm.html?page=11\r\n\r\n\r\nFor other questions, I recommend looking at the Issue tracker:\r\nhttps://github.com/leecher1337/ntvdmx64\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleecher1337%2Fntvdmx64","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleecher1337%2Fntvdmx64","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleecher1337%2Fntvdmx64/lists"}