我正在尝试使用ServiceController通过WinForms应用程序访问Windows服务(也由我创建):
service = new System.ServiceProcess.ServiceController("MyService")
服务返回OK,我可以通过myservice.Status
查看状态。
但是当我尝试启动(或停止)它时,它会返回错误:
无法在机器'。'
中打开服务MyService
我是管理员,服务流程正在以NetworkService身份运行。
我是.net和Windows应用程序的新手,我似乎无法进一步调试它。
答案 0 :(得分:2)
我终于能够通过在app.manifest(project-> new item->应用程序清单)中设置执行级别来解决问题
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
现在,控制应用程序需要管理员权限,因此可以毫无问题地启动/停止服务。
尽管如此,我相信我可以通过其他方式使用模拟代码或者以某种方式降低服务运行级别。
在启动应用程序之前,我将不得不对此进行审核,然后我会在此处发布我的发现。
感谢Drew在整个调试过程中提供指导。
此致
答案 1 :(得分:1)
您确定使用的是服务名称,而不是显示名称吗?
仔细检查您是否是本地管理员。
服务是否在本地计算机上运行?我不确定你为什么会看到主机名'。'
编辑:
我在线阅读如果InvalidOperationException
不是有效的服务名称,则以下代码会引发Test Service
:
var sc = new ServiceController("Unknown Service");
string name = sc.DisplayName;
documentation for this constructor并不表示会抛出异常,所以我猜你需要使用服务名称。您在之后看到的任何异常实际上都是真正的错误。
希望更清楚。