ADSIでサービスステータスの照会 - どのような権利が必要ですか?
-
28-10-2019 - |
質問
私はVB6を使用しており、ADSIを使用してWindowsサービスのステータス(実行または実行)をクエリしています。このMSの記事を参照してください: http://msdn.microsoft.com/en-us/library/aa746322(v=vs.85).aspx.
ユーザーグループのメンバーであるユーザーを使用して、私はスローされた例外を受けています。 GetObjectメソッドにあると思います:
Set comp = GetObject("WinNT://.,Computer")
例外は、80070005「一般的なアクセス拒否エラー」です
ただし、パワーユーザーのメンバーと同じコードを実行すると、正常に機能します。
すべてのユーザーをパワーユーザーに引き上げることはオプションではありません。この機能が正常に実行されるためには、どのような正確な権利を付与する必要がありますか?
procmon.exeを実行しようとしましたが、拒否が発生していることまたはどこで発生しているかを出力から決定することができませんでした。
ありがとう!
編集: これはXP SP2で実行されています。
解決
UACの障壁にぶつかっているように聞こえます。私はIADSServiceに精通していませんが、Windowsサービスが実行されているかどうかを判断する際にはほとんど必要ありません。 API関数を使用してサービスを照会することを検討しましたか?試す QueryServiceStatus service_query_statusでオープンしたサービスで。
他のヒント
ヘビー級管理サービスやAPI呼び出しは必要ありません。 Shell Automation Interfaceはしばらくの間これを提供してきました(Win2K以降、shell32.dllv。5.0以降):
With CreateObject("Shell.Application")
MsgBox .IsServiceRunning("MSMQ")
End With
標高なしで私のためにうまく機能します。