Разрешение на запрос WMI

384
lightwing

У меня есть проект по удалению прав администратора у наших пользователей. Приложение, которое мы используем во время обновлений, выполняет запрос к WMI:

Namespace: root\Microsoft\sqlserver\computermanagement10 Class: sqlserviceadvancedproperty 

Так как я удалил права администратора у пользователя, он не может вернуть какие-либо данные при запросе этого пространства имен и класса и, таким образом, не удается установить, говоря, что соответствующая версия SQL Server не установлена.

Я попытался добавить разрешения в пространство имен сверху вниз, но безуспешно. Если я добавлю права администратора обратно в учетную запись пользователя на устройстве, запрос снова будет работать.

Я использую PowerShell для проверки:

gwmi -namespace root\Microsoft\sqlserver\computermanagement10 -class sqlserviceadvancedproperty 

Когда я запускаю это без прав администратора, это не выдает ошибку или вообще ничего. Он просто возвращает ноль и возвращает меня в командную строку. Побежал с правами администратора, получаю целую кучу данных.

Кто-нибудь знает, к каким конкретным элементам в Windows пользователь должен иметь доступ, чтобы иметь возможность запрашивать определенное пространство имен WMI?

4
Насколько я могу судить, это места, необходимые для разрешения: C: \ Windows \ System32 \ WBEM; HKLM \ SOFTWARE \ Microsoft \ WBEM; соответствующие разрешения в WMI Management (wmimgmt.msc). Эта информация, похоже, не помогает с моей операцией. Я склоняюсь к другим причинам, так как не получаю результатов по тому же запросу, когда вошел в систему как локальный администратор. lightwing 7 лет назад 0
Оказывается, я пропустил учетную запись при добавлении разрешений на службу MSSQLSERVER в моем объекте групповой политики. Встроенная учетная запись «СЕРВИС» должна иметь разрешение на чтение для службы, иначе вы не сможете запросить этот класс WMI. Если вы выполните команду sc sdshow mssqlserver из командной строки, SDDL для «СЕРВИС» должен выглядеть следующим образом: (A ;; CCLCSWLOCRRC ;;; SU). Если вам когда-либо приходилось иметь дело со строками SDDL, я нашел их очень полезными: http://blogs.msmvps.com/erikr/2007/09/26/set-permissions-on-a-specific-service-windows/ и https://msdn.microsoft.com/en-us/library/windows/desktop/aa379602(v=vs.85).aspx lightwing 7 лет назад 0
Пожалуйста, прочитайте [Могу ли я ответить на свой вопрос?] (Http://superuser.com/help/self-answer). Возможно, вы захотите преобразовать свой комментарий в ответ;) DavidPostill 7 лет назад 1

1 ответ на вопрос

2
lightwing

Насколько я могу сказать, это места, необходимые для разрешения:

  • C: \ Windows \ System32 \ WBEM

  • HKLM \ SOFTWARE \ Microsoft \ WBEM

  • соответствующие разрешения в WMI Management (wmimgmt.msc)

Эта информация, похоже, не помогает с моей операцией. Я не получил результатов от того же запроса, когда вошел в систему как локальный администратор после проверки этих.

Оказывается, я пропустил учетную запись при добавлении разрешений на службу MSSQLSERVER в моем объекте групповой политики. Встроенная учетная запись «СЕРВИС» должна иметь разрешение на чтение для службы, иначе вы не сможете запросить этот класс WMI. Если вы делаете

sc sdshow mssqlserver 

из командной строки SDDL для «SERVICE» должен выглядеть следующим образом:

(A;;CCLCSWLOCRRC;;;SU) 

Если вам когда-нибудь придется иметь дело со строками SDDL, я считаю, что они очень полезны: