Re: Процесс от имени другого пользователя
От: Alex Fedotov США  
Дата: 08.05.01 05:07
Оценка: 12 (2)
Здравствуйте av, вы писали:

av> Задача такая: есть программа, которая должна запускать сабж. В MSDN'е есть

av> фунцкия CreateProcessAsUser(), но для нее надо выполнить LogonUser().
av> Последняя функция валится с ошибкой "нет требуемых привилегий". Что делать?

LogonUser требует SE_TCB_NAME привилегию, которая по умолчанию есть только
у LocalSystem аккаунта.

В Win2K можно вызвать CreateProcessWithLogonW, которая не требует дополнительных
привилегий. Она обращается к RunAs сервису, который вызывает LogonUser и
CreateProcessAsUser из LocalSystem аккаунта.

В NT 4 единственный известный мне способ — это сделать свой сервис в LocalSystem,
из которого вызывать LogonUser и CreateProcessAsUser. Ограничение LogonUser
можно обойти, если использовать NTLM SSP для аутентификации и получения токена
(это описано в MSDN KB article Q180548). Но даже имея токен, вызвать
CreateProcessAsUser из обычного аккаунта не получится, поскольку она требует
наличия SE_ASSIGNPRIMARYTOKEN_NAME привилегии, которая тоже по умолчанию
только у LocalSystem.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.