Мне удалось решить эту проблему самостоятельно, спасибо всем, кто посмотрел на этот вопрос.
Хорошо, как я уже говорил выше, токен принадлежит процессу, который выполняется в сеансе 0 ...
так что я сделал ... ищется токен процесса, который не выполняется в сеансе 0.
когда вы берете его идентификатор процесса в качестве параметра для OpenProcessToken.
чем CreateProcessAsUser создаст процесс в том же сеансе (и, вероятно, с теми же преступниками, что и выбранный вами процесс);
Проблема заключалась в том, что я не мог получить какие-либо подробности о большинстве процессов, используя функцию: QueryFullProcessImageName - потому что он содержит ошибку и не работает с процессами, созданными из пути, содержащего пробелы ( например, C: \ Program Files)
и еще одна проблема с этой функцией, которую я предполагаю, заключается в том, что, поскольку я запускаю исходный процесс с использованием пользователя cridentals, я не могу получить доступ к информации о процессе, который выполняется с использованием учетной записи локальной системы. что довольно плохо, потому что я хотел взять в качестве процесса winlogon.exe (потому что он указывает на новый открытый сеанс).
также, чтобы преуспеть в этом трюке, вы должны немного поиграть с безопасностью системы, чтобы позволить процессу запрашивать повышенную безопасность:
то, что я выбрал для повышения:
SeDebugPrivilege - для поиска информации о запущенных процессах
SeAssignPrimaryTokenPrivilege - для запуска нового процесса с токеном, извлеченным из процесса пользовательской сессии (т.е. explorer.exe)
SeCreateTokenPrivilege - я не знаю, нужно ли это, но я все равно сделал это, потому что это звучит как связанное.
Чтобы преуспеть в повышении этих привилегий, вы должны добавить пользователя, который запускает процесс, к соответствующим пользователям во всех этих привилегиях в run-> gpedit.msc или run-> secpol.msc (в разделе Политика локального компьютера \ Конфигурация компьютера \ Конфигурация Windows \ Параметры безопасности \ LocalPolicies \ Назначения прав пользователя)
добавить вашу учетную запись к следующим правам (совместимо с вышеуказанными привилегиями):
Создать объект токена
Отладка программ
Заменить токен уровня процесса
и это все! :)
это работает отлично!
Кстати, вы могли бы захотеть отключить все вещи UAC ... Я не знаю, связано ли это или нет, но это сделало работу с 2008 года менее болезненной - больше не надоедливые всплывающие окна.