CreateProcessWithUser не может выдать себя за пользователя с ошибками 87, 1349 - PullRequest
1 голос
/ 02 декабря 2010

На сервере Windows 2003, работающем из службы, createprocessasuser завершается с ошибкой 87 и ошибкой от WLEXECSERVER, которая говорит, что не может выдать себя за пользователя.

На 64-разрядном сервере Windows 2003, запущенном из службы, createprocessasuser завершается с ошибкой 1349.

Токен создан с использованием OpenProcess -> OpenProcessToken(TOKEN_QUERY, TOKEN_DUPLICATE) -> DuplicateTokenEx (WITH GRANT_ALL, PrimaryToken, SecurityImpersonation).

На WIN7 и 2008 R2 работает без проблем.

Если я возьму токен с WTSQueryUserToken, он также будет работать нормально.

У кого-нибудь есть идея, почему?

1 Ответ

1 голос
/ 31 августа 2013

Кажется, такая же проблема в Windows XP: CreateProcessAsUser завершается с ошибкой 233 (0xE9), если идентификатор сеанса не равен 0 и пользователь не вошел в систему. Эта ошибка исправлена ​​в NT 6.0 и выше.

Существуют некоторые обходные пути, которые могут помочь: https://groups.google.com/d/msg/microsoft.public.win32.programmer.kernel/h72eJ7iMynE/zVgBe_aVj24J https://github.com/zealotous/ultravnc/blob/master/winvnc/winvnc/service.cpp

Посмотрите на функцию CreateRemoteSessionProcess .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...