使用C#窗口形式的远程关机的电脑?(Remote shutdown PC using C# wind

2019-08-31 16:17发布

我试图关闭PC远程编程方式使用C#通过命令提示符,我已经做了一些搜索,发现了这种代码。

System.Diagnostics.Process.Start("shutdown", "/s");

而且,由于它不spicify其关机,所以我试图改变任何电脑,代码此代码,我想满足我的目标。 但事实证明,这是行不通的。

System.Diagnostics.Process.Start("shutdown", "/s /m \\192.168.1.21 /t 5 /c 'Shutdown in 5 seconds'");

在C#中也不例外,它只是不关机。

我也试试这个,但没有运气。

 System.Diagnostics.Process.Start("shutdown /s /m \\192.168.1.21 /t 5 /c 'Shutdown in 5 seconds'");

C#异常“系统找不到指定文件”。

编辑:

我忘了告诉你,我alredy设置我的远程计算机和服务器,它不会不相互连接,如关闭防火墙,配置本地系统策略和不断变化的网络和共享中心的方式。

Answer 1:

在C#,\\在字符串意味着\

因此参数解释为

/ S / M \ 192.168.1.21 /吨5 / C'关断在5秒钟的

你应该使用\\\\代表\\

或者开始引号像在此之前加一个@标志

System.Diagnostics.Process.Start( “关断”,@ “/ S / M \\ 192.168.1.21 /吨5 / C '关断5秒'”);



Answer 2:

你可以看看下面的SO发布。 它谈论重新启动远程计算机。

WMI重新启动远程计算机

如果你看一下Win32Shutdown方法

关机=> 1(为0x1)&重启=> 2(0×2)

所以在SO上面的链接,你将不得不改变

 // Add the input parameters.
 inParams["Flags"] =  2; //Reboot

 // Add the input parameters.
 inParams["Flags"] =  1; //Shutdown


Answer 3:

您还必须启用目标计算机上的“远程注册表”服务,您必须在远程计算机上的管理员权限。

看到这里的细节 。



Answer 4:

这应该工作:

System.Diagnostics.Process.Start("shutdown", @"-m \\192.168.1.21 -s -f -t 0");

标志应syntaxed像-m,而不是/平方米。

更妙的是建立一个“无声”关闭(不CMD窗口显示):

var shutdown = new ProcessStartInfo("shutdown", @"-m \\192.168.1.8 -s -f -t 0");
shutdown.CreateNoWindow = true;
shutdown.UseShellExecute = false;
Process.Start(shutdown);

在Win7测试Net框架4.03



Answer 5:

感谢createnowindow,我已经在想,如果一切正常(但其unusefull如果你想看看发生了什么)用它

没有关于我的破折号的解释没有评论。 只要我知道,你可以选择 - 或/

自己尝试一下:-)启动+ R(运行),你会看到它的工作原理:)

我认为它以大量的工作来解决它。

所以我figgerd的是一个能使用文件“FILENAME.cmd”

与 “关机-s -m \ IP -t 40”,在它

为提醒延迟关闭或保存的东西(不nessecary)

在-f不为我工作

但与CMD文件我可以调用它,让它从我的应用程序运行。

所以我的问题解决了,我知道它有点....不完美。 但它的作品至少。

感谢名单一切为了快速回复的



文章来源: Remote shutdown PC using C# windows form?
标签: c# cmd shutdown