как использовать Process.Start () для одной из встроенных учетных записей пользователей? - PullRequest
0 голосов
/ 30 марта 2011

Мне было интересно, есть ли способ запустить процесс, который запускается как одна из учетных записей встроенной службы?Я хочу начать процесс для управляемого кода.Я хочу использовать одну из встроенных учетных записей служб (LocalService, NetworkService, LocalSystem).

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Я думаю, что вы можете сделать это только из контекста другого сервиса (или, может быть, достаточно просто запустить, так как LocalSystem достаточно);в этом случае вы можете использовать LogonUser () для получения токена.В качестве альтернативы вы можете попытаться найти существующую службу, работающую под нужной учетной записью, и продублировать ее токен (при условии, что у вас есть соответствующий доступ для этого).

0 голосов
/ 30 марта 2011

Я думаю, вы можете использовать psexec в качестве посредника для запуска процесса под учетной записью LocalSystem (System):

Запустите Regedit в интерактивном режиме в системной учетной записи, чтобы просмотреть содержимое ключей SAM и SECURITY:

psexec -i -d -s c:\windows\regedit.exe

Но я не могу придумать способ запуска под другими учетными записями. Единственным косвенным способом, который я мог придумать, было бы сделать так, чтобы служба уже работала под соответствующей учетной записью, а затем подключилась к ней (например, через удаленное взаимодействие, каналы, WCF, все, что у вас работает) и попросила его запустить новый процесс.

Конечно, в этом случае новый процесс не может взаимодействовать с рабочим столом, поэтому, если вам это нужно, вам все равно не повезет.

...