![]() |
WMI + Benutzer einer lokalen Gruppe auslesen
Guten Abend,
wie kann man mit WMI die Benutzer einer lokalen Gruppe bzw. der lokalen Administratoren auslesen? Das Programm wird auf dem jeweiligen Rechner ausgeführt. Vielen Dank im voraus. Sven |
Re: WMI + Benutzer einer lokalen Gruppe auslesen
Das entsprechende WQL-Query ist:
SQL-Code:
Select * from Win32_UserAccount where LocalAccount = True
|
Re: WMI + Benutzer einer lokalen Gruppe auslesen
Danke schön.
Aber mit der Abfrage bekomme ich alle lokalen Benutzer. Ich müsste aber die Abfrage so gestalltem, dass ich ein Gruppe angebe und dann die Mitglieder aufgelistet werden (egal, ob Lokal oder in einer Domäne). Funktioniert das irgendwie? Danke im voraus. |
Re: WMI + Benutzer einer lokalen Gruppe auslesen
Die zugehörigen WMI Klassen sind
Alle Useraccounts: "select * from Win32_UserAccount where Domain='Domänenname’" Und alle Gruppen: "select * from Win32_GroupUser where Domain='Domänenname'" Um alle Nutzer einer Gruppe zu holen braucht man Win32_GroupUser - und da ist ein Trick dabei: Die Win32_GroupUser klasse ist einer Verknüpfung und verbindet eine Gruppe mit allen Accounts die darin sind. Die Abfrage lautet:
SQL-Code:
select * from Win32_GroupUser where GroupComponent='"'Win32_Group.Domain='DomänenName',',Name='Gruppenname""'
|
Re: WMI + Benutzer einer lokalen Gruppe auslesen
Genial. Hat funktioniert.
Ich mache das jetzt so.
Delphi-Quellcode:
Leider muss ich jetzt PartComponent nehmen, welches mir folgendes ausgibt:
procedure Tfrm_main.Button1Click(Sender: TObject);
var SWbemLocator1 : ISWbemLocator; aSrv : ISWbemServices; vNVS : OleVariant; aObjSet : ISWbemObjectSet; aNVSDummy : IDispatch; pEnum : IEnumVARIANT; vOut : OleVariant; dwRetrieved : LongWord; hRes : HResult; Domain, Group : String; begin Domain := GetEnvironmentVariable('COMPUTERNAME'); Group := edt_localgroup.Text; memo_result.Clear; SWbemLocator1 := CoSWbemLocator.Create; aSrv := SWbemLocator1.ConnectServer(GetEnvironmentVariable('COMPUTERNAME'),'root\cimv2','','','','',0,vNVS); aObjSet := aSrv.ExecQuery('select * from Win32_GroupUser where GroupComponent="Win32_Group.Domain='+Chr(39)+Domain+Chr(39)+',Name='+Chr(39)+Group+Chr(39)+'"','WQL', 0, aNVSDummy); pEnum := aObjSet.Get__NewEnum as IEnumVARIANT; while (TRUE) do begin hRes := pEnum.Next(1, vOut, dwRetrieved); if hRes <> S_OK then Break; // memo_result.Lines.Add(VarToStr(vOut.Name)); // funktioniert leider nicht memo_result.Lines.Add(VarToStr(vOut.PartComponent)); end; end; Zitat:
Danke. |
Re: WMI + Benutzer einer lokalen Gruppe auslesen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz