【问题标题】:Is it possible to Shut down a 'remote PC' programatically through .net application? [duplicate]是否可以通过 .net 应用程序以编程方式关闭“远程 PC”? [复制]
【发布时间】:2009-04-09 12:31:45
【问题描述】:

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

如果是,怎么可能?

【问题讨论】:

    标签: c# remoting


    【解决方案1】:

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

    【讨论】:

    • 我认为你的文章摘录很好。特别是在解释您在代码 sn-p 中使用的开关时。 Microsoft 可能会重组其网站并断开链接。哦,好吧...至少是您对其进行了编辑,而不是一些过分热心的具有编辑权限的修改器:)
    • @wcm,感谢您的评论,我将摘录的相关部分放回并修复了开关
    【解决方案2】:

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

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

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

    http://urkec.mojblog.rs/

    【讨论】:

      【解决方案3】:

      您可以为此使用程序中的 WMI。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          我的方式:

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

          当然是从远程 ASP.NET 页面触发的。

          【讨论】:

          • 我认为这将关闭服务器而不是远程 PC
          • 这会关闭当前电脑,而不是远程电脑
          猜你喜欢
          • 1970-01-01
          • 2017-03-31
          • 1970-01-01
          • 1970-01-01
          • 2014-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多