Какое влияние оказывает поле подсистемы PE-заголовка? - PullRequest
8 голосов
/ 01 февраля 2011

У меня есть несколько вопросов о поле PE "подсистема", которые могут в некоторой степени перекрываться.Чтобы избежать спама в этом месте с каждым вопросом в отдельности, я решил задать их вместе, а затем заново задать все, что не было решено.Надеюсь, что все в порядке ...

Я знаю, что IMAGE_SUBSYSTEM_WINDOWS_CUI заставляет ОС предварительно подключать процесс к консоли, либо к родительскому процессу, либо, при необходимости, к созданию новой консоли.IMAGE_SUBSYSTEM_WINDOWS_GUI этого не делает.

Есть ли другие различия между этими двумя в современной версии Windows?Было ли что-то еще в прошлом?

А как насчет других значений, они используются Windows просто для отклонения EXE, или они заставляют Windows эмулировать другой API?Является ли этот процесс эмуляции расширяемым для конечных пользователей, или он встроен в ОС?

1 Ответ

7 голосов
/ 01 февраля 2011

Да, предварительное подключение консоли, похоже, является единственной текущей разницей.Если память служит, это было не так в случае с 16-разрядными версиями Windows (95/98 / SE / Me).

Более старые версии NT принимали другие значения для POSIX и ОС/ 2 подсистемы.

Теоретически, вы можете написать свою собственную подсистему, используя собственный API NT.Хотя для этого достаточно документации, если вы посмотрите, я не уверен, что этого достаточно для этой задачи.В любом случае подсистема Win32 всегда имела довольно «особый» статус, и теперь, когда другие подсистемы исчезли, я даже не уверен, что они даже пытались обеспечить интеграцию других подсистем.На NT 4 (для одного примера) я бы сказал «сложно, но почти наверняка возможно».В текущей версии Windows, я бы сказал, что есть вероятность того, что некоторые изменения в ядре не позволят ему работать - и намного ниже, чем вероятность того, что доступная в настоящее время документация подойдет любому, кроме MSвнедрение подсистемы.

...