使用ProcessStartInfo以LocalSystem启动进程

时间:2010-04-23 08:31:30

标签: c# .net

我正在尝试使用此代码

作为LocalSystem帐户启动流程
    ProcessStartInfo _startInfo = new ProcessStartInfo(commandName);
_startInfo.UseShellExecute = false;
_startInfo.UserName = @"NT AUTHORITY\SYSTEM";
_startInfo.CreateNoWindow = true;
_startInfo.Arguments = argument;
_startInfo.RedirectStandardOutput = true;

using (Process _p = Process.Start(_startInfo)) {
  _retVal = _p.StandardOutput.ReadToEnd();
  _p.WaitForExit();
}

但是我总是收到同样的错误消息“登录失败:未知用户名或密码错误”。调用该函数的用户是本地管理员,应该能够启动具有本地系统特权的进程。我也试过不同的组合,但没有运气。

我将不胜感激任何帮助。 谢谢

2 个答案:

答案 0 :(得分:3)

不幸的是,我认为你不能这么简单。

Process.Start()调用的底层API接受用户名和密码,但由于SYSTEM用户不是常规用户且没有密码,我不相信您可以将其用于此API。

您必须使用类似psexec的内容(当然,您可以从Process.Start()拨打电话)。

答案 1 :(得分:0)

我有一段时间遇到了一些困难。最后管理它。你可能遗失的是一些许可或其他许可。查看我的previous question/answer.