【发布时间】:2009-04-09 12:31:45
【问题描述】:
我想知道,是否可以通过 .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篇)
【讨论】:
您可以为此使用程序中的 WMI。
【讨论】:
我有一个与用户一起运行的本地应用程序,但组策略表明该用户无法关闭电脑。 然后我使用你的代码,但是当我通过用户和密码要求模拟我的应用程序时。我收到下一个错误 System.Management.ManagementException:无法将用户的凭据用于本地连接
【讨论】:
我的方式:
Process.Start("ShutDown", "/s");
当然是从远程 ASP.NET 页面触发的。
【讨论】: