Создать процесс как пользователь после загрузки профиля пользователя - PullRequest
0 голосов
/ 27 июля 2010

У меня есть служба, которая работает как система, я хочу порождать новый процесс в некотором сеансе TS пользователя с привилегиями пользователя.

Я звоню LogonUser, LoadUserProfile, CreateEnvironmentBlock, CreateProcessAsUser и spwan процесса всеанс пользователя TS.

Процесс (cmd.exe) запускается в сеансе пользователя TS, но когда я пытаюсь запустить приложение с графическим интерфейсом, я получаю следующее сообщение об ошибке:

Исключение EAccessViolation вmodule ntdll.dll в 00022272.

Нарушение прав доступа по адресу 77D22272 в модуле 'ntdll.dll'.Напишите адрес 0000000C.

Я что-то пропустил?

Любая помощь будет принята с благодарностью!

Спасибо, Лиор

1 Ответ

0 голосов
/ 03 августа 2010

Посмотрите на Запуск процесса в сеансе пользователя из службы . Основная проблема заключается в том, что вы должны начать процесс с другого сеанса TS. Таким образом, вы должны переключить текущий сеанс в отношении SetTokenInformation и TokenSessionId. Для этого вам нужно включить привилегию SE_TCB_NAME.

Кроме того, необходимо изменить дескриптор безопасности объектов рабочего стола и Windows Station в отношении OpenWindowStation, OpenDesktop и SetUserObjectSecurity (см. http://msdn.microsoft.com/en-us/library/ms681928.aspx, http://msdn.microsoft.com/en-us/library/ms687107.aspx и http://support.microsoft.com/kb/165194)

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