日期:2014-05-18  浏览次数:20834 次

C# 实现远程关机功能
使用C#实现远程关机,服务器端发出关机命令,在客户端的程序开始运行,调用SHUTDOWN -S -T命令来实现关机。部分代码如下:
p.StartInfo.FileName = "cmd.exe";
  p.StartInfo.RedirectStandardError = true;
  p.StartInfo.RedirectStandardInput = true;
  p.StartInfo.RedirectStandardOutput = true;
  p.StartInfo.UseShellExecute = false;
  p.Start();
  if (message.Contains("-S"))
  {
  p.StandardInput.WriteLine("SHUTDOWN -S -T 1");
  //p.StandardInput.WriteLine("SHUTDOWN -S");
  }
  else if (message.Contains("-R"))
  {
  p.StandardInput.WriteLine("SHUTDOWN -R");
  }
  else if (message.Contains("-A"))
  {
  p.StandardInput.WriteLine("SHUTDOWN -A");
  }
  p.StandardInput.WriteLine("Exit");
  p.WaitForExit();
  p.Close();
当服务器端发出关机命令的时候,客户端的其他程序都会关闭掉,如QQ,等。可是潜入在客户端用来关机的程序,开始跑一个进度条,提示程序正在结束。完了以后出现一个对话框,上面提示立即结束程序和取消。然后就一直停留在这个界面上,电脑并不能关机、请问各位大侠如何解决????

------解决方案--------------------
p.WaitForExit();
这句注释了看看
------解决方案--------------------
首先在客户端手动执行一下关机的DOS命令看看会不会出现这种情况!如果手动执行DOS命令也是如此的话,可能就要想其它的办法了!
------解决方案--------------------
探讨
手动的DOS命令还是出现啊

------解决方案--------------------
要不你试试这个吧
http://www.cnblogs.com/battler/archive/2005/03/19/121750.html
------解决方案--------------------
现在需要解决的是如何在客户端下,不弹出对话框的情况下来通过程序来关机,然后用服务端来控制这个程序,可以尝试一下楼上的这个方法!
------解决方案--------------------
SHUTDOWN /s /t 5 /f
自己看看SHUTDOWN 的帮助信息就知道什么问题了。
还有就是执行程序的用户权限注意一下就可以了