Berechtigung zum Abfragen von WMI

515
lightwing

Ich habe ein Projekt, um Administratorrechte von unseren Benutzern zu entfernen. Eine Anwendung, die wir bei Upgrades verwenden, führt eine Abfrage gegen WMI aus:

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

Da ich die Administratorrechte vom Benutzer entfernt habe, kann er beim Abfragen dieses Namensraums und dieser Klasse keine Daten zurückgeben. Die Installation schlägt fehl, wenn die entsprechende SQL Server-Version nicht installiert ist.

Ich habe versucht, dem Namespace Berechtigungen von oben nach unten hinzuzufügen und kein Glück. Wenn ich dem Benutzerkonto auf dem Gerät wieder Administratorrechte hinzufüge, funktioniert die Abfrage erneut.

Ich nutze Powershell zum Testen:

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

Wenn ich dies ohne Administratorrechte ausführe, wird kein Fehler oder überhaupt etwas angezeigt. Es gibt einfach null zurück und bringt mich zur Eingabeaufforderung zurück. Mit Administratorrechten ausgestattet, bekomme ich einen ganzen Haufen Daten.

Hat jemand eine Idee, auf welche Elemente in Windows ein Benutzer Zugriff benötigt, um einen bestimmten WMI-Namespace abfragen zu können?

4
Soweit ich das beurteilen kann, sind dies die für die Erlaubnis erforderlichen Speicherorte: C: \ Windows \ System32 \ WBEM; HKLM \ SOFTWARE \ Microsoft \ WBEM; entsprechende Berechtigungen innerhalb der WMI-Verwaltung (wmimgmt.msc). Diese Informationen scheinen bei meinem OP nicht zu helfen. Ich neige zu anderen Ursachen, da ich keine Ergebnisse aus derselben Abfrage bekomme, während ich als lokaler Administrator angemeldet bin. lightwing vor 7 Jahren 0
Es stellte sich heraus, dass ich beim Hinzufügen von Berechtigungen zum MSSQLSERVER-Dienst in meinem Gruppenrichtlinienobjekt ein Konto verpasst habe. Das integrierte Konto "SERVICE" muss über Leseberechtigung für den Dienst verfügen, andernfalls können Sie diese WMI-Klasse nicht abfragen. Wenn Sie sc sdshow mssqlserver von einer Befehlszeile aus ausführen, sollte die SDDL für "SERVICE" folgendermaßen aussehen: (A ;; CCLCSWLOCRRC ;;; SU). Wenn Sie sich jemals mit SDDL-Strings befassen müssen, fand ich diese hilfreich: http://blogs.msmvps.com/erikr/2007/09/26/set-permissions-on-a-specific-service-windows/ und https://msdn.microsoft.com/de-de/library/windows/desktop/aa379602(v=vs.85).aspx lightwing vor 7 Jahren 0
Bitte lesen Sie [Kann ich meine eigene Frage beantworten?] (Http://superuser.com/help/self-answer). Vielleicht möchten Sie Ihren Kommentar in eine Antwort umwandeln;) DavidPostill vor 7 Jahren 1

1 Antwort auf die Frage

2
lightwing

Soweit ich das beurteilen kann, sind dies die Standorte, die für die Genehmigung erforderlich sind:

  • C: \ Windows \ System32 \ WBEM

  • HKLM \ SOFTWARE \ Microsoft \ WBEM

  • entsprechende Berechtigungen innerhalb der WMI-Verwaltung (wmimgmt.msc)

Diese Informationen scheinen bei meinem OP nicht zu helfen. Ich erhalte keine Ergebnisse aus derselben Abfrage, während ich als lokaler Administrator angemeldet bin, nachdem ich diese überprüft habe.

Es stellte sich heraus, dass ich beim Hinzufügen von Berechtigungen zum MSSQLSERVER-Dienst in meinem Gruppenrichtlinienobjekt ein Konto verpasst habe. Das integrierte Konto "SERVICE" muss über Leseberechtigung für den Dienst verfügen, andernfalls können Sie diese WMI-Klasse nicht abfragen. Wenn Sie tun

sc sdshow mssqlserver 

Von einer Befehlszeile aus sollte die SDDL für "SERVICE" folgendermaßen aussehen:

(A;;CCLCSWLOCRRC;;;SU) 

Wenn Sie sich jemals mit SDDL-Strings befassen müssen, fand ich diese sehr hilfreich: