Seite 1 von 1

Inhalt der Gruppe der lokalen Administratoren per WMI

Verfasst: Dienstag 23. Februar 2010, 08:07
von knumskull
Hallo,

ich such nach einer Möglichkeit, wie ich den Inhalt der Gruppe der lokalen Administratoren per remote auslesen kann.

eine Möglichkeit, die mir da eingefallen ist, ist das ganze per WMI zu versuchen.
Leider tue ich mich da ein wenig schwer. So richtig komme ich nicht dahinter.

Habe folgende Ansätze:

per WMI:

Code: Alles auswählen

import win32com.client

strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")

colItems = objSWbemServices.ExecQuery("SELECT * FROM Win32_GroupUser WHERE domain='"+strComputer+"'")

for objItem in colItems:
    if objItem.GroupComponent != None:
        print "GroupComponent:" + ` objItem.GroupComponent`
    if objItem.PartComponent != None:
        print "PartComponent:" + ` objItem.PartComponent`


wenn ich das ohne den "domain"-Parameter ausführe, findet er alle User/Gruppen der Domäne. Das ist fatal.

Meine andere Variante ist per adsi ? (glaub ich zumindest :-))

Code: Alles auswählen

import win32com.client

def f_GetAdminUsers(RemoteComputer):
	objGroup = win32com.client.GetObject("WinNT://"+RemoteComputer+"/Administratoren")
	for objMember in objGroup.Members:
		print objMember.Name

# MAIN
f_GetAdminUsers(strComputer)
Hier bekomme ich nur ne Fehlermeldung:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\efroem1\Desktop\Eclipse-Workspace\CAE-Support\src\WMI_quick.py", line 44, in <module>
f_GetAdminUsers(strComputer)
File "C:\Dokumente und Einstellungen\efroem1\Desktop\Eclipse-Workspace\CAE-Support\src\WMI_quick.py", line 38, in f_GetAdminUsers
objGroup = win32com.client.GetObject("WinNT://"+RemoteComputer+"/Microsoft/Administratoren")
File "c:\Python26\lib\site-packages\win32com\client\__init__.py", line 72, in GetObject
return Moniker(Pathname, clsctx)
File "c:\Python26\lib\site-packages\win32com\client\__init__.py", line 87, in Moniker
moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)
pywintypes.com_error: (-2147463164, 'OLE error 0x80005004', None, None)
Ich kann damit leider nicht viel anfangen. Wäre super, wenn jemand eine Idee hat.
Ich bin natürlich auch offen für jede weitere Möglichkeit, die Benutzer abzufragen.

LG Knums

Verfasst: Dienstag 23. Februar 2010, 11:42
von mkesper
Habe gerade das winsys-Modul von Tim Golden gefunden, damit ist das ein Kinderspiel:

Code: Alles auswählen

from winsys import accounts
admins = accounts.local_group("Administrators")
for user in admins:
    print user
Bisher habe ich schon sein active_directory-Modul und mal das wmi-Modul benutzt. AD finde ich ganz intuitiv, aber wmi ist einfach unübersichtlich. Zum Überblick über das ADS ist die MMC mit dem Snap-In "Active Directory Users and Computers" unentbehrlich. Diese blendet allerdings dann auch Merkmale ein, die eben nicht per AD, sondern nur per wmi (oder evtl per winsys) abfragbar sind.

Verfasst: Dienstag 23. Februar 2010, 12:57
von knumskull
Super,

das klingt schonmal ganz gut. Kann ich damit auch Remote-Abfragen durchführen?
Ich würde halt gern checken, ob ein bestimmter Benutzer in der Gruppe der lokalen Administratoren enthalten ist.

Allerdings wenn der Eintrag nicht drin ist, habe ich keine Adminrechte.

Also eigentlich möchte ich auch nur checken, ob die Gruppe in dem Computer eingetragen ist, oder ob ich überhaupt Adminrechte besitze.

ne Idee?
LG Knums