Как запустить консольное приложение как работающее под учетной записью системного пользователя Windows? - PullRequest
5 голосов
/ 13 июля 2011

Я пытался

var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = filename,
        UserName = "System",
        UseShellExecute = false,
    },
};

process.Start();

, но это дает

Win32Exception не обрабатывается

Ошибка входа: неизвестное имя пользователя или неправильный пароль

Мне придется использовать CreateProcessAsUser?Как я могу получить соответствующие параметры для передачи этому методу?

Ответы [ 2 ]

8 голосов
/ 13 июля 2011

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

Однако я нашел сообщение на форуме, в котором описан хитрый трюк, который можно использовать для запуска процессов под системной учетной записью с помощью (ab) служб Windows:

Совет. Запуск процесса в системной учетной записи (sc.exe)

В качестве альтернативы средство Windows Sysinternals PsExec позволяет запускать процесс под системной учетной записью с помощью переключателя -s.

0 голосов
/ 13 июля 2011

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

РЕДАКТИРОВАТЬ: Моя ошибка LocalSystem & LocalService не являютсяобычные пользователи и, следовательно, они не могут быть предоставлены в качестве имени пользователя.Правильное решение Крагена

...