PE头“subsystem”字段的作用是什么?

我有几个关于PE“子系统”领域的问题,可能会有一定的重叠。 为了避免垃圾邮件这个地方与每个问题分开,我以为我会问他们在一起,然后重新问分开的东西没有得到解决。 希望这是OK …

我知道IMAGE_SUBSYSTEM_WINDOWS_CUI使操作系统“预先附加”进程到控制台,或者是其父进程,或者如果需要的话创build一​​个新的控制台。 IMAGE_SUBSYSTEM_WINDOWS_GUI不这样做。

在现代版本的Windows中,这两者之间是否还有其他区别? 过去有没有更多?

那么其他值呢,他们是用Windows来拒绝一个EXE,还是让Windows模拟一个不同的API呢? 这个“模拟”过程是否可以由最终用户扩展,或者这是否被硬编入到操作系统?

是的,预安装控制台似乎是目前唯一的区别。 如果内存服务,那么与基于16位版本的Windows(95/98 / SE / Me)相比,情况并非如此。

老版本的NT接受了POSIX和OS / 2子系统的其他值。

从理论上讲,您可能可以使用NT Native API编写自己的子系统。 虽然如果你看,这里面有相当多的文档,但是我不确定这个任务是否足够。 Win32子系统总是有一个“特殊”的状态,而现在其他子系统已经不存在了,我甚至不确定他们甚至试图确保其他子系统可以被集成。 在新台币四(举一个例子),我会说“困难,但几乎肯定可行”。 在当前版本的Windows上,我会说甚至有可能对内核进行一些更改会阻止其正常工作 – 而且甚至比目前可用的文档将胜任除MS之外的任何人的任务实现一个子系统。