2011-03-22 107 views
0

我正在使用VB6並使用ADSI查詢Windows服務的狀態(正在運行或未運行)。看到這篇MS文章:http://msdn.microsoft.com/en-us/library/aa746322(v=vs.85).aspx使用ADSI查詢服務狀態 - 需要哪些權限?

對於USERS組成員的用戶,我收到了拋出的異常。我相信這是對GetObject方法:

Set comp = GetObject("WinNT://.,Computer") 

唯一的例外是:80070005「常規訪問被拒絕錯誤」

運行相同的代碼爲電力用戶的成員,然而,工作得很好。

將所有用戶提升爲超級用戶不是一種選擇。爲了使此功能成功運行,我需要授予哪些確切的權限?

我試着運行procmon.exe,並且無法從輸出中確定發生了什麼或發生了否定。

謝謝!

編輯:這是在XP SP2上運行。

回答

2

聽起來就像你遇到UAC障礙。我不熟悉IADsService,但確定Windows服務是否正在運行幾乎沒有必要。你有沒有考慮過使用API​​函數來查詢你的服務?在使用SERVICE_QUERY_STATUS打開的服務上嘗試QueryServiceStatus

+0

我的歉意,我應該包括,這是在XP(編輯包括這個小竅門)。感謝您的鏈接,我會檢查該界面(不知道爲什麼它沒有出現在我以前的搜索)。 – MarkL 2011-03-23 13:23:14

+0

好的,只是在XP上測試過的服務。有限的用戶帳戶是Users組的成員,並且可以從正在運行的服務查詢信息,因此ADSI可能會在幕後請求太多信息。僅供參考,但內置的Guest帳戶無法查詢服務信息,您可以在此處執行的最佳操作是獲取正在運行的進程名稱的列表。我建議使用API​​調用,以便更好地控制過程。 – 2011-03-23 22:46:41

+0

是的,也適合我。而且我還注意到了訪客/用戶帳戶的差異。 謝謝! – MarkL 2011-03-24 15:18:14

0

不需要重量級管理服務或API調用。殼牌自動化接口提供了這一段時間(Win2K或更高版本,Shell32.dll中V 5.0起或更高版本):

With CreateObject("Shell.Application") 
    MsgBox .IsServiceRunning("MSMQ") 
End With 

工作正常,我沒有擡高。

相關問題