Использование перехватчиков окон. Я отправляю сообщения в свое приложение, которое уведомляется о событиях Windows каждым приложением в системе.DuplicateHandle: требуется OpenProcess, но доступ запрещен
Чтобы выполнить маршал параметров сообщения, я использую общие воспоминания. Внешний процесс вызывает DuplicateHandle, но для совместного использования дескриптора с моим экземпляром приложения он должен позвонить OpenProcess с требованиями привилегии PROCESS_DUP_HANDLE.
Фактически каждое приложение может отправлять сообщения с использованием этой архитектуры, даже если мне нужно включить SeDebugPrivilege во внешний процесс. Это на самом деле работает, для процесса «исследователь», который не имеет маркер SeDebugPrivilege кроме ...
Документация AdjustTokenPrivileges состояний:
Функция AdjustTokenPrivileges не может добавлять новые привилегии в маркер доступа , Он может включать или отключать существующие привилегии токена. Чтобы определить привилегии токена, вызовите функцию GetTokenInformation.
Итак, вопрос ... как добавить маркер SeDebugPrivilege в «Проводник» процесс, или в качестве альтернативы, как позволить «исследователя» процесс назвать OpenProcess(PROCESS_DUP_HANDLE, FALSE, pId)
?
Кажется, именно то, что мне нужно! Какой SID соответствует PROCESS_DUP_HANDLE? (Я не могу изменить SID процесса с помощью ProcEx ... :() – Luca
PROCESS_DUP_HANDLE - это маска доступа, которая определяет права доступа, управляемые ACE (см. Http://msdn.microsoft.com/en-us/library/ aa374868.aspx). SID, который вы выберете, может быть хорошо известен группе SID всех (см. http://msdn.microsoft.com/en-us/library/aa379649.aspx). Если вы не знакомы с дескрипторами безопасности I рекомендуется использовать ConvertStringSidToSid или ConvertStringSecurityDescriptorToSecurityDescriptor, где это возможно, и использовать язык определения дескриптора безопасности (SDDL) (см. http://msdn.microsoft.com/en-us/library/aa379567.aspx). – Oleg
Я нашел это: http://stackoverflow.com/questions/1909084/is-there-a-way-to-modify-a-process-dacl-in-c (назначение сообщений - это управляемый процесс). Он работает, но не может настроить маску доступа для WellKnownSidType. LogonIdsSid, к которому принадлежит «explorer» (не может создать SecurityIdentifier типа LogonIdsSid). Sigh. – Luca