2008. augusztus 13., szerda

List all User Identities in a ComboBox


Problem/Question/Abstract:

List all User Identities in a ComboBox

Answer:

The handy procedure GetIdentities() retrieves all user identities on a Windows system and and returns them for display in a TComboBox.

This can be useful for email tools.

procedure GetIdentities(cbIdentities: TComboBox);
var
  slIdentities: TStringList;
  sUser: string;
  sLastUsername: string;
  i: Integer;
begin { GetIdentities }
  cbIdentities.Items.Clear;
  sLastUsername := '';
  slIdentities := TStringList.Create;
  with TRegistry.Create do
  begin
    RootKey := HKEY_CURRENT_USER;
    if OpenKey('Identities', False) then
    begin
      sLastUsername := ReadString('Last Username');
      GetKeyNames(slIdentities);
      CloseKey;
    end; { OpenKey() }

    // get all the user names
    for i := 0 to slIdentities.Count - 1 do
    begin
      if OpenKey('Identities\' + slIdentities[i], False) then
      begin
        sUser := ReadString('Username');
        cbIdentities.Items.Add(sUser + ' - ' + slIdentities[i]);
        if sUser = sLastUsername then
          cbIdentities.ItemIndex := i;
        CloseKey;
      end; { OpenKey() }
    end; { for i }
    Free;
  end; { with TRegistry.Create }
  slIdentities.Free;
end; { GetIdentities }

Nincsenek megjegyzések:

Megjegyzés küldése