我们使用ServiceController对象来查询我们的Service是否正在运行。我们正在执行查询的Web应用程序使用模拟进行安全/登录。在Web应用程序的C#中查询Windows服务状态
System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController("myService");
return sc.Status
使用管理员帐户,查询成功。使用有限帐户(非管理员),查询失败,并显示“服务myService在计算机上未找到”的消息。“”......但这只在Windows Server 2003中失效,而不在Windows XP中。
我已经谷歌搜索并在MSDN检查。我没有发现任何与Windows Server 2003中ServiceController的使用相关的内容。
任何想法?
编辑:如果有一种方法来查询服务状态而不使用不涉及“安全”特权的ServiceController,那可能适用于我们。我们只需要获得服务的状态。
UPDATE:
我创建了一个简单的控制台应用程序将打印服务的状态。我使用“runas”命令使用管理员和非管理员帐户运行应用程序。它都在Windows Server 2003中工作......这意味着这是一个权限问题,没有正确传递给Web应用程序中的ServiceController调用?也许IIS安全的东西?
谢谢!
另一种选择是服务更新数据库/文本文件,然后从您的Web应用程序中查询?这样你永远不必担心权限,特别是如果你需要将它移动到另一台服务器等等。 – seanxe
好的解决方法! – Ian
另一件事是检查Windows事件日志以查看是否有任何特定的安全相关消息。 –