Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#5

Re: WMI + Benutzer einer lokalen Gruppe auslesen

  Alt 9. Dez 2009, 21:42
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.
  Mit Zitat antworten Zitat