0

私は VB6 を使用しており、ADSI を使用して Windows サービスの状態 (実行中かどうか) を照会しています。この MS 記事を参照してください: http://msdn.microsoft.com/en-us/library/aa746322(v=vs.85).aspx .

USERS グループのメンバーであるユーザーの場合、例外がスローされます。GetObject メソッドにあると思います:

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

The exception is: 80070005 "General access denied error"

Running the same code as a member of POWER USERS, however, works just fine.

Elevating all users to Power users isn't an option. What exact rights do I need to have granted in order for this function to run successfully?

I've tried running procmon.exe, and wasn't able to determine from the output as to what or where a denial is occurring.

Thanks!

Edit: This is running on XP sp2.

4

2 に答える 2

2

UAC バリアにぶつかっているようです。私は IADsService に詳しくありませんが、Windows サービスが実行されているかどうかを判断する必要はほとんどありません。API 関数を使用してサービスをクエリすることを検討しましたか? SERVICE_QUERY_STATUS で開かれたサービスでQueryServiceStatusを試してください。

于 2011-03-23T06:21:08.653 に答える
0

重い管理サービスや API 呼び出しは必要ありません。シェル オートメーション インターフェイスは、しばらくの間これを提供してきました (Win2K 以降、Shell32.dll v. 5.0 以降):

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

昇格なしで私にとってはうまくいきます。

于 2011-03-24T22:33:05.323 に答える