Thema: Delphi PSID in String umwandeln

Einzelnen Beitrag anzeigen

Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#7

Re: PSID in String umwandeln

  Alt 8. Nov 2003, 11:15
Hab mir jetzt mal eine eigene Procedure geschrieben um alle Benutzernamen + deren SIDs zu erhalten (Bin aber noch ein totaler Anfänger also erwartet jetzt nix!). List nur die Werte aus der Registry aus.

Die Procedure
Delphi-Quellcode:
procedure GetUsersAndSIDs(var Users,Sids:TStringList);
var
  reg : Tregistry;
  KeyNames:TstringList;
  i:integer;
begin
Users.Clear;
Sids.Clear;
KeyNames:=TstringList.Create;
Reg:=Tregistry.Create;
reg.RootKey:=HKEY_USERS;
reg.OpenKey('',false);
reg.GetKeyNames(KeyNames);
i:=KeyNames.Count-1;
while i>=1 do
  begin
  reg.CloseKey;
  if (reg.KeyExists(KeyNames.Strings[i]+'\Software\Microsoft\Windows\CurrentVersion\Explorer')) and not((KeyNames.Strings[i]='.DEFAULT')or not((KeyNames.Strings[i][Length(KeyNames.Strings[i])]<>'s')and(KeyNames.Strings[i][Length(KeyNames.Strings[i-1])]<>'e'))) then
    begin
    reg.OpenKey(KeyNames.Strings[i]+'\Software\Microsoft\Windows\CurrentVersion\Explorer',false);
    if reg.ValueExists('Logon User Name') then
      begin
      if reg.ReadString('Logon User Name')<>'then
        begin
        Sids.Add(KeyNames.Strings[i]);
        Users.Add(reg.ReadString('Logon User Name'));
        end;
      end;
    end;
  i:=i-1;
  end;
end;
Der Aufruf
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  Users,Sids:TStringList;
begin
Users:=TStringList.Create;
Sids:=TStringList.Create;
GetUsersAndSIDs(Users,Sids);
Listbox1.Items:=Users;
Listbox2.Items:=Sids;
FreeAndNil(Users);
FreeAndNil(Sids);
end;
  Mit Zitat antworten Zitat