我正在尝试使用ServiceController.GetServices()方法获取所有服务的列表。在控制台应用程序中,它工作正常,但如果我在Windows服务中调用此方法,则会得到一个空列表。这似乎是一个身份验证问题,但我使用了所有帐户选项(本地系统,本地服务,网络服务,用户[这是本地管理员]),没有运气。Windows服务中的ServiceController
有什么建议吗?
谢谢
我正在尝试使用ServiceController.GetServices()方法获取所有服务的列表。在控制台应用程序中,它工作正常,但如果我在Windows服务中调用此方法,则会得到一个空列表。这似乎是一个身份验证问题,但我使用了所有帐户选项(本地系统,本地服务,网络服务,用户[这是本地管理员]),没有运气。Windows服务中的ServiceController
有什么建议吗?
谢谢
同意,这必须是用户帐户权限问题。枚举需要通过调用本机OpenSCManager()API函数开始。这是一个非常特殊的功能,SDK文档指出需要管理员访问权限。你将不得不配置服务,并给它一个管理员登录。听起来像你已经试过这个。担心UAC,然后在serverfault.com上询问更多关于它的问题,推测安全专家的家。
你如何检查列表是否为空? – Andreas 2010-07-09 11:53:45
尝试获得单一服务(另一种+当前服务),并查看它是否先工作。获取当前服务正常工作,不确定是否获取有关其他人的信息:P – 2010-07-09 11:56:12
@Andreas我正在使用套接字,并且我通过telnet发送命令。当命令是“list”时,它将返回所有服务的名称。当我将应用程序作为控制台应用程序时,一切正常,但Windows服务应用程序返回空。 – Feyyaz 2010-07-09 12:00:39