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

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

如果是的话,怎么样?

请参阅此知识库文章

例如:

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会强制所有正在运行的程序退出。 保存可能已更改的任何数据的选项将被忽略。 这可能导致以前未保存数据的任何程序中的数据丢失。

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

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

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

http://urkec.mojblog.rs/

您可以使用程序中的WMI。

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

我的方式:

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

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