Здравствуйте 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.