Genial. Hat funktioniert.
Ich mache das jetzt so.
Delphi-Quellcode:
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;
Leider muss ich jetzt PartComponent nehmen, welches mir folgendes ausgibt:
Zitat:
\\<domain>\root\cimv2:Win32_UserAccount.Domain="<d omain>",Name="<benutzername>"
Gibt es noch eine einfache Methode nur den Namen auszugeben? Wenn nicht muss ich die Ausgabe zerlege, was nicht das Problem wäre aber eine einfache Methode wäre angenehm.
Danke.