我试图关闭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设置我的远程计算机和服务器,它不会不相互连接,如关闭防火墙,配置本地系统策略和不断变化的网络和共享中心的方式。
在C#,\\在字符串意味着\
因此参数解释为
/ S / M \ 192.168.1.21 /吨5 / C'关断在5秒钟的
你应该使用\\\\代表\\
或者开始引号像在此之前加一个@标志
System.Diagnostics.Process.Start( “关断”,@ “/ S / M \\ 192.168.1.21 /吨5 / C '关断5秒'”);
你可以看看下面的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
您还必须启用目标计算机上的“远程注册表”服务,您必须在远程计算机上的管理员权限。
看到这里的细节 。
这应该工作:
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
感谢createnowindow,我已经在想,如果一切正常(但其unusefull如果你想看看发生了什么)用它
没有关于我的破折号的解释没有评论。 只要我知道,你可以选择 - 或/
自己尝试一下:-)启动+ R(运行),你会看到它的工作原理:)
我认为它以大量的工作来解决它。
所以我figgerd的是一个能使用文件“FILENAME.cmd”
与 “关机-s -m \ IP -t 40”,在它
为提醒延迟关闭或保存的东西(不nessecary)
在-f不为我工作
但与CMD文件我可以调用它,让它从我的应用程序运行。
所以我的问题解决了,我知道它有点....不完美。 但它的作品至少。
感谢名单一切为了快速回复的