从服务

时间:2015-05-13 15:55:33

标签: c# windows

有没有办法从服务中重启Windows(Server 2008,Server 2012)?我试过了:

System.Diagnostics.Process.Start("cmd.exe /c shutdown -f -r -t 0")

无济于事。我在这里看过解决方案:

How to shut down the computer from C#

http://www.stackoverflow.com/questions/1215139/reboot-machine-from-a-c-wpf-app

http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/shut-down-restart-log-off-and-forced-log-off-system-using-C-Sharp/

并且机器不想重启。

当我从命令行运行命令时,它可以工作。

cmd.exe /c shutdown -f -r -t 0

甚至

shutdown -f -r -t 0

从服务中运行时没有任何反应。我甚至修改它来运行:

c:\\windows\\system32\\cmd.exe /c c:\\windows\\system32\\shutdown.exe -f -r -t 0

同样的结果,没有任何反应。再次,当我从命令行运行时,它正确地重新启动。

2 个答案:

答案 0 :(得分:1)

我怀疑是因为窗口服务没有GUI ......它无法运行命令提示符。

查看win32 API解决方案......例如ExitWindowsEx()或InitiateSystemShutdown或关闭

答案 1 :(得分:1)

试试这个..

Process myPro = new Process()  
myPro.StartInfo.FileName = "cmd.exe";
myPro.StartInfo.Arguments = “/c shutdown –f –r –t 0”;
myPro.StartInfo.UseShellExecute = false;
myPro.CreateNoWindow = true;
myPro.Start();

你的cmd.exe文件在哪里?如果它没有用完运行应用程序的同一目录?您可能需要提供指向cmd.exe文件的途径。

例如..

myPro.StartInfo.FileName = "c:\desktop\myStuff\cmd.exe";

希望有所帮助