是否可以通过.net应用程序以编程方式关闭“远程PC”?

时间:2009-04-09 12:31:45

标签: c# remoting

我想知道,是否可以通过.net应用程序以编程方式关闭远程PC?

如果是,那怎么可能?

5 个答案:

答案 0 :(得分:7)

请参阅this KB article

例如:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents=false;
proc.StartInfo.FileName = "shutdown.exe";
proc.StartInfo.Arguments = @"\\computername /t:120 ""The computer is shutting down"" /y /c";
proc.Start();

上面的示例使用以下开关(摘自链接文章)

  • \\ computername:使用此开关指定要关闭的远程计算机。如果省略此参数,则使用本地计算机名称。

  • / t:xx:使用此开关指定计算机关闭之前的时间(以秒为单位)。默认值为20秒。

  • “计算机正在关闭”:使用此开关在关机过程中指定消息。邮件可包含的最大字符数为127。

  • / y:使用此开关对来自计算机的所有查询强制回答“是”。

  • / c:使用此开关退出所有正在运行的程序。如果使用此开关,Windows会强制所有正在运行的程序退出。保存可能已更改的任何数据的选项将被忽略。这可能导致以前未保存数据的任何程序中的数据丢失。

答案 1 :(得分:2)

WMI将适用于此任务。 Win32_OperatingSystem类有一个名为Win32Shutdown的方法。这可用于关闭远程计算机。

Win32Shutdown:http://msdn.microsoft.com/en-us/library/aa394058(VS.85).aspx

以下博客条目在C#中有一个完整的程序,演示了如何使用WMI关闭计算机。在页面上搜索Win32Shutdown(关于第二篇文章)

http://urkec.mojblog.rs/

答案 2 :(得分:1)

您可以使用程序中的WMI。

答案 3 :(得分:0)

我有一个本地应用程序与一个用户一起运行,而不是一个组策略,表明该用户无法关闭该PC。 然后我使用你的代码,但是当我通过用户和密码要求模仿我的应用程序时。我收到了下一个错误 System.Management.ManagementException:无法使用用户的凭据进行本地连接

答案 4 :(得分:-1)

我的方式:

Process.Start("ShutDown", "/s");

当然,从远程ASP.NET页面解雇。