Запрос статуса службы с помощью ADSI - какие права необходимы? - PullRequest
0 голосов
/ 23 марта 2011

Я использую VB6 и использую ADSI для запроса статуса (работает или нет) службы Windows. Смотрите эту статью MS: http://msdn.microsoft.com/en-us/library/aa746322(v=vs.85).aspx.

С пользователем, который является членом группы USERS, я получаю исключение. Я полагаю, что это метод GetObject:

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

Исключение составляет: 80070005 "Ошибка общего доступа запрещена"

Выполнение того же кода, что и для пользователя POWER USERS, однако, работает отлично.

Повышение уровня всех пользователей до опытных пользователей не вариант. Какие точные права мне нужно предоставить для успешной работы этой функции?

Я попытался запустить procmon.exe и не смог определить по выходным данным, что или где происходит отказ.

Спасибо!

Редактировать: Это работает на XP sp2.

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Похоже, вы наткнулись на барьер UAC.Я не знаком с IADsService, но вряд ли необходимо определять, работает ли служба Windows.Рассматривали ли вы использовать функции API для запроса вашего сервиса?Попробуйте QueryServiceStatus на службе, открытой с помощью SERVICE_QUERY_STATUS.

0 голосов
/ 25 марта 2011

Нет необходимости в мощных административных сервисах или вызовах API. Интерфейс Shell Automation предлагал это в течение некоторого времени (Win2K или более поздняя версия, Shell32.dll v. 5.0 или более поздняя версия):

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

У меня отлично работает без возвышения.

...