【问题标题】:Shutdown or Restart Machine In C# and ASP.NET在 C# 和 ASP.NET 中关闭或重新启动计算机
【发布时间】:2013-10-11 18:17:47
【问题描述】:

我希望能够关闭或重新启动运行 ASP.NET 应用程序的服务器。以下代码在调试模式下运行良好:

Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "shutdown";
startInfo.Arguments = "/r /f /t 0";
startInfo.UseShellExecute = true;
startInfo.Verb = "runas";
process.StartInfo = startInfo;
process.Start();

我也尝试过此代码,但收到以下错误“进程对象必须将 UseShellExecute 属性设置为 false 才能以用户身份启动进程”:

var info = new ProcessStartInfo("shutdown.exe", "/r /t 0");
        info.UserName = "administrator";
        //A not-so-secure use of SecureString
        var secureString = new SecureString();
        var password = "password";
        foreach (var letter in password)
        {
            secureString.AppendChar(letter);
        }
        info.Password = secureString;
        var restart = new Process();
        restart.StartInfo = info;
        restart.Start();

我将以下内容添加到我的代码中:

info.UseShellExecute = false;

然后错误“进程对象必须将 UseShellExecute 属性设置为 false 才能以用户身份启动进程”消失,但代码像第一块代码一样执行

当我在调试模式下执行代码或运行命令为 cmd 时,服务器将重新启动。但是,当我在服务器上实时运行应用程序时,它不会重新启动。我没有收到任何错误,或者弹出说服务器正在或不会重新启动。有人可以告诉我我做错了什么吗?

更新:我添加了一个try-catch,并且该应用永远不会引发异常。但是,当我查看事件日志时,我发现了 shutdown.exe 的应用程序错误事件 1000

【问题讨论】:

标签: c# asp.net process cmd shutdown


【解决方案1】:

运行您的应用程序池的帐户没有足够的权限来重新启动系统,这就是它不会发生的原因。

您可以通过登录服务器并随后转到Control Panel > Administrative Tools > Local Security Policy、展开Security Settings > Local Policies > User Rights Assignment 节点并转到Shut down the system 设置来更改此设置。将应用程序池帐户(或其父组,如果您有一个组)添加到该列表。

【讨论】:

  • 我不确定如何找到在应用程序池下运行的帐户。我以为是管理员
  • 您可以通过转到 IIS 管理器、浏览到应用程序所在的文件夹并单击“基本设置”来查看此内容。这将显示应用程序池的名称。转到“应用程序池”,按名称查找应用程序池,然后在“高级设置”下查找帐户。如果显示“NetworkService”或“ApplicationPoolIdentity”,请将其更改为专用帐户(不要使用自己的帐户!)
  • 我把身份改成了管理员账户,在本地安全策略中添加了管理员账户。我仍然无法重启服务器。
  • @nate 您的问题可能不是经过更多研究后的代码,并且预感您的问题不是由代码引起的,它很可能是服务器上正在运行的程序阻止重新启动IE 你需要谷歌“无法重启 Windows 服务器”。
  • 服务器可以重新启动。我已经能够在批处理文件中执行此操作,并在 cmd 中使用 shutdown 命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多