Есть ли метод из приложения выполнить код перед самым его закрытием (TerminateProcess и всякимим такими методами), желательно не делая злодеяний вроде перехвата апи, длл инжекта и загруки драйверов.
Если приложение оконное, то обрабатывай соответствующее сообщение. Если нет, особенно рассматривая вариант с "внешним" закрытием, то наверное нет
2MSoft ты не понял, TerminateProcess не отправляет никаких там сообщений твоему окну, а просто убивает процесс. Была идея поймать момент когда хэндл открывается с такими правами, только я не знаю как реализовать.
кроме перехвата ZwTerminateProcess скорее всего никак Ну еще можно перехватить OpenProcess с типов доступа PROCESS_TERMINATE, но не факт, что нас будут закрывать потом. ZwTerminateProcess лучше перехвати
Надёжнее то оно надёжнее... только одна проблема, что хочется сделать без такого Ахтунга. И что бы для этого не пришлось грузить драйвера и назначать всякие apc. То есть как бы так сделать не проблема. Но хочется по человечески, и что бы это не требовало прав. Я ведь пишу вполне мирное приложение, просто хочу, кое что успеть прежде чем меня закроет какой нить лапух.
В юзермоде противодействия терминатепроцесс нету.. да и по логике быть не может. специально сделано чтобы можно было в случае чего без проблем грохнуть процесс... можешь попробовать перехватить функу из нтдлл... меньше прав надо, в отличие от дрова. но и качество соотв.)