2010-07-09 36 views
0

我正在嘗試使用ServiceController.GetServices()方法獲取所有服務的列表。在控制檯應用程序中,它工作正常,但如果我在Windows服務中調用此方法,則會得到一個空列表。這似乎是一個身份驗證問題,但我使用了所有帳戶選項(本地系統,本地服務,網絡服務,用戶[這是本地管理員]),沒有運氣。Windows服務中的ServiceController

有什麼建議嗎?

謝謝

+0

你如何檢查列表是否爲空? – Andreas 2010-07-09 11:53:45

+0

嘗試獲得單一服務(另一種+當前服務),並查看它是否先工作。獲取當前服務正常工作,不確定是否獲取有關其他人的信息:P – 2010-07-09 11:56:12

+0

@Andreas我正在使用套接字,並且我通過telnet發送命令。當命令是「list」時,它將返回所有服務的名稱。當我將應用程序作爲控制檯應用程序時,一切正常,但Windows服務應用程序返回空。 – Feyyaz 2010-07-09 12:00:39

回答

1

同意,這必須是用戶帳戶權限問題。枚舉需要通過調用本機OpenSCManager()API函數開始。這是一個非常特殊的功能,SDK文檔指出需要管理員訪問權限。你將不得不配置服務,並給它一個管理員登錄。聽起來像你已經試過這個。擔心UAC,然後在serverfault.com上詢問更多關於它的問題,推測安全專家的家。

+0

我試過Artiom的建議,我通過服務名創建了兩個ServiceController對象,並且他們沒有給我任何錯誤。所以問題是關於從Windows服務獲取所有服務。順便說一句,用戶已經是管理員。謝謝 – Feyyaz 2010-07-09 13:17:19

+0

這些服務是否在遠程機器上運行? – 2010-07-09 13:26:17

+0

不,他們是本地服務。簡單的問題是ServiceController.GetServices()方法返回空列表。我仍然不明白這個問題:/。 – Feyyaz 2010-07-09 13:47:11

相關問題