我正在嘗試使用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