.Net类来控制远程机器上的服务?

是的,我可以谷歌,但我有点懒。 我需要远程控制另一台机器上的Windows服务。 ServiceController类让我这样做吗? 那里有什么限制? 我是否可以远程启动/停止/更改“运行”细节,即更改由于过期而导致的密码?

我将试图给在工作的用户一个ASP.Net网站仪表板来控制在他们自己的帐户下运行的本地机器上的多个服务(他们都是他们机器上的本地pipe理员)。 这与其他function集成在一起,所以我没有考虑创build一个可以在本地运行的可分发组件。 将使用Windows身份validation和模拟用户进行更改。 我可能遇到什么问题?

干杯

var sc = new ServiceController("servicename", "othermachinename"); 

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

如果你想改变服务凭证等,你将不得不使用WMI – 这不像使用ServiceController类那么简单。 请参阅ManagementObject类以获取更多信息。

我发现这个链接描述了使用WMI来更改服务凭据。

@MadSeb –

正如我在另一篇文章中所说:

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

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