如何将控制台应用程序作为系统Windows用户帐户运行?

5

我尝试过

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

process.Start();

但它会产生以下结果:

Win32Exception未处理

登录失败:未知的用户名或错误的密码

我将不得不使用CreateProcessAsUser? 如何获取适当的参数以传递给该方法?

2个回答

8
系统账户的密码是由Windows内部维护的(我想),即尝试通过以这种方式提供凭据作为系统账户启动进程最终注定会失败。
然而,我找到了一个论坛帖子,描述了一种可以利用Windows服务来运行系统账户下进程的巧妙技巧: 提示:使用sc.exe在系统账户中运行进程 另外,Windows Sysinternals工具PsExec似乎允许您使用-s开关在系统账户下运行进程。

1
psexec -s 是我通常的方法。请记住,psexec 需要一个提升的启动器本身。 - Richard

0

如果您想以高权限运行进程(它是管理员组的成员),则用户名应为LocalSystem,或者如果需要普通权限,则应为LocalService

编辑:我的错误,LocalSystem和LocalService不是常规用户,因此不能作为用户名提供。Kragen的解决方案是正确的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接