我试过
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = filename,
UserName = "System",
UseShellExecute = false,
},
};
process.Start();
但它产生了
Win32Exception未处理
登录失败:未知用户名或密码错误
我将不得不使用CreateProcessAsUser
?
如何获取传递给该方法的相应参数?
答案 0 :(得分:8)
系统帐户密码由Windows维护(我认为),即通过以这种方式提供凭证来尝试以系统帐户启动流程最终注定会失败。
但我找到了一个论坛帖子,描述了一个巧妙的技巧,可用于通过(ab)使用Windows服务在系统帐户下运行进程:
Tip: Run process in system account (sc.exe)
或者,Windows Sysinternals工具PsExec似乎允许您使用-s
开关在系统帐户下运行流程。
答案 1 :(得分:0)
如果您想以高权限运行您的流程(它是管理员组的成员)或LocalSystem
以获得正常权限,则用户名应为LocalService
编辑:我的错误LocalSystem& LocalService不是常规用户,因此无法将其作为用户名提供。 Kragen的解决方案是正确的