【问题标题】:.Net classes to control services on a remote machine?.Net 类来控制远程机器上的服务?
【发布时间】:2010-11-12 16:04:08
【问题描述】:

是的,我可以用谷歌搜索,但我有点懒。我需要远程控制另一台机器上的 windows 服务。 ServiceController 类是否允许我这样做?有什么限制?我可以远程启动/停止/更改“运行方式”详细信息,即更改即将到期的密码吗?

我将尝试为工作中的用户提供一个 ASP.Net 网站仪表板,以控制在他们的本地计算机上以他们自己的帐户运行的多个服务(他们都是他们计算机上的本地管理员)。这与其他功能集成在一起,因此我不打算创建一个可以在本地为它们运行的​​可分发文件。将使用 Windows 身份验证并模拟用户进行更改。我可能会遇到什么问题?

干杯

【问题讨论】:

    标签: c# asp.net windows impersonation remote-access


    【解决方案1】:
    var sc = new ServiceController("servicename", "othermachinename");
    

    运行代码的帐户需要目标计算机上的管理权限才能与服务交互。模拟将起作用。我只在相当严格控制的情况下使用它(即从具有相同凭据的用户帐户在源/目标计算机上运行),但根据我的经验,所有操作都按预期工作。

    如果您想更改服务凭据等,则必须使用 WMI——这不像使用 ServiceController 类那么容易。有关详细信息,请参阅 ManagementObject 类。

    我发现 this link 描述了使用 WMI 更改服务凭据。

    【讨论】:

    • +1 我也用这个;将其包装到控制台应用程序中,以便我可以使用runas 在具有给定用户帐户的远程计算机上启动/停止服务。
    • 谢谢 - 那么你们谁能给我一些关于 WMI / ManagementObject 的提示吗?
    • Arj:检查我的答案中的链接——它有一个 WMI 示例。
    【解决方案2】:

    @MadSeb -

    正如我在other post 中所说的:

    如果您使用的是 C# 或 VB.Net,请使用 WMI

    否则,“SC”可能是从命令行或 .bat 文件中使用的最佳工具。

    【讨论】:

      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2019-06-20
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多