C# Windows服务中的ServiceController

C# Windows服务中的ServiceController,c#,windows-services,servicecontroller,C#,Windows Services,Servicecontroller,我正在尝试使用ServiceController.GetServices()方法获取所有服务的列表。在控制台应用程序中,它工作正常,但如果在windows服务中调用此方法,则会得到一个空列表。这似乎是一个身份验证问题,但我使用了所有帐户选项(本地系统、本地服务、网络服务、用户[是本地管理员]),没有运气 有什么建议吗 谢谢同意,这必须是一个用户帐户权限问题。枚举需要通过调用本机OpenSCManager()API函数开始。这是一个非常特权的功能,SDK文档注意到需要管理员访问。您必须配置服务并为

我正在尝试使用ServiceController.GetServices()方法获取所有服务的列表。在控制台应用程序中,它工作正常,但如果在windows服务中调用此方法,则会得到一个空列表。这似乎是一个身份验证问题,但我使用了所有帐户选项(本地系统、本地服务、网络服务、用户[是本地管理员]),没有运气

有什么建议吗


谢谢

同意,这必须是一个用户帐户权限问题。枚举需要通过调用本机OpenSCManager()API函数开始。这是一个非常特权的功能,SDK文档注意到需要管理员访问。您必须配置服务并为其提供管理员登录。听起来你已经试过了。稍微担心一下UAC,然后在serverfault.com上询问更多关于它的问题,该网站被认为是安全专家的家。

如何检查列表是否为空?尝试获取单个服务(不同的服务+当前服务),然后先看看它是否工作。。获取当前服务效果良好,但不确定是否获取其他人的信息:P@Andreas我正在使用一个套接字,我正在通过telnet发送一个命令。当命令为“list”时,它返回所有服务的名称。当我将应用程序设置为控制台应用程序时,一切正常,但windows服务应用程序返回空。我尝试了Artiom的建议,按服务名称创建了两个ServiceController对象,他们没有给我任何错误。因此,问题在于如何从windows服务获取所有服务。顺便说一句,用户已经是管理员了。谢谢这些服务在远程机器上运行吗?不,它们是本地服务。问题只是ServiceController.GetServices()方法返回空列表。我还是不明白这个问题:/。