如何使用ServiceController远程控制Windows服务?

Amo*_*tir 19 c# wmi windows-services remote-access servicecontroller

我正在尝试控制安装在远程计算机中的Windows服务.我正在ServiceController上课.

我有这个:

ServiceController svc =  new ServiceController("MyWindowsService", "COMPUTER_NAME");
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以像这样得到Windows服务的状态:

string status = svc.Status.ToString();
Run Code Online (Sandbox Code Playgroud)

但我无法控制Windows服务(通过执行svc.Start();svc.Stop();).我得到以下异常:

无法在计算机'COMPUTER_NAME'上打开Servicexxx服务

这是正常的,我想这与访问权限有关.但是怎么样?我看过谷歌但没找到我想要的东西.但是我经常阅读与假冒相关的内容,但我不知道这意味着什么.

注意:本地和远程计算机都运行Win XP Pro.

Amo*_*tir 9

问题解决了.

模拟包括使用特定登录/密码运行一段代码.我找到了这个非常有用的项目:http://www.codeproject.com/KB/cs/svcmgr.aspx? display =打印给我很多帮助!

  • 这是一个不必要的安全漏洞.如果此应用程序的用户应具有访问权限,则他们应具有该用户的凭据和登录名.更重要的是,他们应该只将权限分配给他们所属的组.这并没有解决问题,这是一个不安全的解决方法请参阅Hans Passant的答案和相关评论. (2认同)

Han*_*ant 7

启动和停止服务是一种高权限操作,通常仅供管理员使用.确保您使用的用户帐户在目标计算机上具有足够的权限.在serverfault.com上提出更多相关问题