Используя оконные хуки, я отправляю сообщения в мое приложение, которое уведомляется о событиях Windows каждым приложением в системе.
Для выполнения маршала параметров сообщения я использую общие воспоминания. Внешний процесс вызывает DuplicateHandle , но для совместного использования дескриптора с моим экземпляром приложения он должен вызвать OpenProcess с требованиями привилегий PROCESS_DUP_HANDLE.
Фактически, каждое приложение может отправлять сообщения с использованием этой архитектуры, даже если мне нужно включить SeDebugPrivilege для внешнего процесса. Это на самом деле работает, за исключением процесса 'explorer', который не имеет токена SeDebugPrivilege ...
В документации AdjustTokenPrivileges говорится:
Функция AdjustTokenPrivileges не может добавлять новые привилегии к токену доступа. Он может только включать или отключать существующие полномочия токена. Чтобы определить привилегии токена, вызовите функцию GetTokenInformation.
Итак, вопрос в том ... как добавить токен SeDebugPrivilege в процесс "explorer" или, альтернативно, как разрешить процессу "explorer" вызывать OpenProcess(PROCESS_DUP_HANDLE, FALSE, pId)
?