1

我有一台计算机 A 托管不同类型的东西:

  • 一个网站(使用C#and开发ASP.Net
  • 应用

我们的客户可以访问该网站,有时他们会想要重新启动计算机 A(知道它会在重新启动期间切断网站)。

我的问题很简单:它是否存在一种方式:

  • 只需单击ASP.Net页面上的按钮即可重新启动计算机?我将如何做到这一点?
  • 同样的方式,当点击页面上的按钮时是否可以执行一些批处理脚本(在计算机 A 上执行)ASP.Net

谢谢你的帮助!

4

4 回答 4

3

这是足够安全的方法(只要密码安全存储)

ProcessStartInfo startInfo = new ProcessStartInfo("shutdown /r /f /t 5");
startInfo.UserName ="user with enough rights";
startInfo.Password ="password";
Process.Start(startInfo);

// /r - restart
// /f - force
// /t 5 - wait 5 seconds
于 2013-02-12T12:32:54.533 回答
1

您可以在命令行中从 C# 执行“shutdown -r”命令,请参阅这个SO question 怎么做。请注意,应用程序必须得到很好的保护,并且在 IIS 下运行的应用程序必须具有足够的用户权限。

编辑:富士提出的方法效果很好,甚至不需要提升过程(我没想到它会起作用,哎呀;))

于 2013-02-12T12:34:19.383 回答
1

您可以使用 System. Diagnostics.Process 命名空间,完整流程请查看以下链接。

http://www.c-sharpcorner.com/UploadFile/yuanwang200409/RemoteRestartWindows09252006141003PM/RemoteRestartWindows.aspx

于 2013-02-12T12:33:51.187 回答
1

这很容易实现,但问题是 IIS 是否允许它。您还将打开漏洞利用,因为如果有人设法利用此漏洞,他们可以链式重启您的服务器。

如果您真的想继续执行此操作,您可以简单地设置一个Web Service触发以下代码的调用。

System.Diagnostics.Process.Start("shutdown.exe", "-r -t 0");

虽然,这听起来更像是您正在寻找一种管理工具来处理这个问题。我建议您查看可用于帮助远程管理服务器的众多工具之一。对于安全来说,管理软件能够赋予用户特定的权限是很重要的,比如限制他们只能重新启动服务器。

于 2013-02-12T12:34:15.903 回答