PE头"子系统"字段有什么影响?

Rom*_*kov 8 windows portable-executable

我有几个关于PE"子系统"字段的问题,它可能在某种程度上重叠.为了避免单独向每个问题发送垃圾邮件,我想我会一起问他们,然后分别重新询问任何无法解决的问题.希望这没关系......

我知道这IMAGE_SUBSYSTEM_WINDOWS_CUI会使操作系统"预先附加"进程到控制台,无论是父进程还是必要时创建新控制台.IMAGE_SUBSYSTEM_WINDOWS_GUI不这样做.

在现代版本的Windows中,这两者之间是否存在其他差异?过去还有更多吗?

其他值如何,Windows仅用于拒绝EXE,还是导致Windows模拟不同的API?这种"仿真"过程是否可以被最终用户扩展,或者这是否已经成为操作系统的难点?

Jer*_*fin 7

是的,预先安装控制台似乎是唯一的当前差异.如果内存服务,那么基于16位的Windows版本(95/98/SE/Me)并非如此.

较早版本的NT接受了POSIX和OS/2子系统的其他值.

理论上,您可以使用NT Native API编写自己的子系统.虽然如果你看起来有相当多的文件,我不能确定它足以完成这项任务.无论如何,Win32子系统始终具有相当"特殊"的状态,现在其他子系统已经消失,我完全不确定他们是否已经尝试确保可以集成其他子系统.在NT 4(举个例子)我说过"很难,但几乎可以肯定".在当前版本的Windows上,我会说有一些甚至可能会对内核进行一些更改会阻止它工作 - 甚至远低于当前可用文档可以胜任任何人的任务的几率.实现一个子系统.