我在读了关于NTVDM.EXE为我建立一个快速测试控制台应用程序,并坠毁一个朋友的机器上抱怨这个EXE。

据我所知所有DOS CMD窗口运行作为16位的32位不(C#控制台应用程序包括)

这是真的吗?这是否意味着我的所有作品控制台应用程序后台办公应用程序正在运行的16位而不是使大多数32位的可用?

什么有关Windows服务?因为我相信我们写它作为一个控制台应用程序,然后使它运行作为Windows服务?

由于

有帮助吗?

解决方案

这被编译用于x86任何.NET应用程序将是32位

C#控制台应用程序还没有“真正的” DOS下运行 - 它们在32位或64位的环境中运行。 - 根据您的操作系统和.NET框架上

其他提示

  

据我所知所有DOS CMD窗口   (C#控制台应用程序在内)作为运行   16位的32位不

     

这是真的吗?

没有,一点都没有。

您可以在Windows下运行DOS应用程序,他们是16位的,但事实上,他们看上去有点控制台类是非常简单,只是巧合。

有无16位.NET应用程序,以及应用是否是控制台模式或不没有区别它是否是16或32位。

MS-DOS应用中投放作为NTVDM下的16位应用程序。

“视窗控制台”的应用程序是不DOS的应用程序,并运行作为本地Windows进程(其中在EXE文件的PE头位将其标识为控制台应用程序,以使Windows可以创建/预习为Windows控制台应用程序,如果一个已经不存在,如运行从CMD或PowerShell的控制台应用程序将重新使用已经创建的控制台窗口,而双击EXE在资源管理器会为应用程序创建一个新的控制台窗口。)

CMD!= DOS

视窗控制台!= DOS

同样地,有因为至少是Windows 2000(NT5),其已经存在于Windows中的一个完整的Windows控制台API如果不是更早(尽管可能只NT-3/4。)

一个.NET控制台应用程序。 (或任何其他.net应用程序),将运行任何针对性它JIT'ed的就是硬件。因此,对于86这将是32位。

  

据我所知所有DOS CMD窗口运行作为16位的32位不(C#控制台应用程序包括)

您就错了。所有的cmd.exe Windows是32或64位,这取决于体系结构。

DOS与Windows一起死ME大约十年前。

我不知道任何.NET VM实现,其能够在16位模式下运行的。微软.NET运行时和Mono只有两个32/64位。我不知道其他较小的,但我会感到惊讶,如果他们能在16位模式下运行。

此外,cmd.exe的运行在32位模式作为cmd.exe的是一个32位Windows应用程序。在另一方面,在command.com 16位模式下运行。

实际上,控制台应用程序远未固有的16位。这仅仅是不正确的,它甚至不是真正的Windows之前,作为x86保护模式为32位,所以在DOS portected模式下运行任何游戏或应用程序是32位。

在.NET中,UI的类型(或缺乏用户界面在Windows服务)不影响应用程序的字长。默认情况下,.NET二进制文件独立于平台,并且如根据.NET框架,内核,主机的等的类型的32位或64位应用程序得到执行。虽然他们可以直接编译到64位太

有什么特别的控制台的exe;它只是一个PE文件。所以不管控制台VS WinForm的exe文件VS Windows服务的,它只是要在任何模式下,它被编译运行。

的Visual Studio等绝不会产生一个16位的exe。 86 VS 64是更有趣;-p

或许,你的朋友没有安装.NET Framework(或只有1.1)。

即使在DOS, “.EXE” 可以是16位或32位(具有适当的编码或DOS扩展库)。

NTVDM.EXE是支持的环境下,他们可以假设CPU运行16位.COM.EXE文件DOS仿真器的16位,并且DOS系统调用是可用的。它与命令提示仅关联是文本模式DOS程序使用控制台窗口提供一个VGA屏幕的仿真在文本模式。

如所指出的,没有.NET VM可用,可以DOS下运行。但是,它可能有趣从Mono项目来源开始,建立一个在FreeDOS下运行...只是吓唬你的朋友; - )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top