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