从LocalSystem拥有的ASP.NET站点启动的进程无法重新启动本地计算机

时间:2019-01-16 17:16:34

标签: asp.net iis process reboot

我有一个在LocalSystem下运行的ASP.NET网站。我试图通过这样的请求线程启动新的shutdown.exe进程来重启当前计算机:

var psi = new ProcessStartInfo
                {
                    FileName = "shutdown.exe",
                    Arguments = "-r -f",
                    UseShellExecute = false,
                    CreateNoWindow = true
                };

Process.Start(psi);

此操作失败,并显示“访问被拒绝”错误。我认为这与丢失特权有关-但是通过C#代码或PowerShell启用它并没有帮助(基于找到的here答案)。我还尝试将SYSTEM添加到有权关闭系统(based on this)的用户/组列表中。

因此,我尝试运行以上代码,包括ProcessStartInfo(常规Adminsitrator帐户)的用户名和密码。我还做了一些检查,以确保该进程实际上是在该用户(不是LocalSystem)下执行的。重新启动仍然不起作用。当我尝试使用powershell.exe(然后使用cmdlet Restart-Computer)或使用cmd.exe/c shutdown作为参数时,也会发生同样的情况。我在2台计算机(一台EC2实例,一台带有最新Windows Server 2016的私有服务器)上尝试了此操作。

现在最令人困惑的部分是:一旦我将网站应用程序池帐户更改为常规的Administrator用户帐户而不是LocalSystem,它便开始工作。这怎么可能?父子过程关系有问题吗?当父进程作为LocalSystem运行时,我是否缺少任何权限/特权?

0 个答案:

没有答案