我有一台计算机 A 托管不同类型的东西:
- 一个网站(使用
C#
and开发ASP.Net
) - 应用
我们的客户可以访问该网站,有时他们会想要重新启动计算机 A(知道它会在重新启动期间切断网站)。
我的问题很简单:它是否存在一种方式:
- 只需单击
ASP.Net
页面上的按钮即可重新启动计算机?我将如何做到这一点? - 同样的方式,当点击页面上的按钮时是否可以执行一些批处理脚本(在计算机 A 上执行)
ASP.Net
?
谢谢你的帮助!
这是足够安全的方法(只要密码安全存储)
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
您可以在命令行中从 C# 执行“shutdown -r”命令,请参阅这个SO question 怎么做。请注意,应用程序必须得到很好的保护,并且在 IIS 下运行的应用程序必须具有足够的用户权限。
编辑:富士提出的方法效果很好,甚至不需要提升过程(我没想到它会起作用,哎呀;))
您可以使用 System. Diagnostics.Process 命名空间,完整流程请查看以下链接。
这很容易实现,但问题是 IIS 是否允许它。您还将打开漏洞利用,因为如果有人设法利用此漏洞,他们可以链式重启您的服务器。
如果您真的想继续执行此操作,您可以简单地设置一个Web Service
触发以下代码的调用。
System.Diagnostics.Process.Start("shutdown.exe", "-r -t 0");
虽然,这听起来更像是您正在寻找一种管理工具来处理这个问题。我建议您查看可用于帮助远程管理服务器的众多工具之一。对于安全来说,管理软件能够赋予用户特定的权限是很重要的,比如限制他们只能重新启动服务器。