Abfrageliste der Windows-Konten in Inno Setup

Dec 11 2020

In meinem Inno Setup-Projekt muss ich dem Benutzer erlauben, ein Konto aus der Liste aller lokalen Konten auf einer benutzerdefinierten Seite auszuwählen. Das ausgewählte Konto wird verwendet, um einen Dienst mit benutzerdefinierten Anmeldeinformationen zu installieren. Wie kann ich das machen?

Danke im Voraus!

Antworten

1 MartinPrikryl Dec 11 2020 at 20:03

Sie können die WMI- Win32_UserAccountKlasse verwenden , um die Liste der Konten abzufragen.

[Run]
Filename: sc.exe; Parameters: ... {code:GetAccount}
[Code]

var
  AccountPage: TInputOptionWizardPage;

procedure InitializeWizard();
var
  WMIService: Variant;
  WbemLocator: Variant;
  WbemObjectSet: Variant;
  I: Integer;
begin
  Log('InitializeWizard');
  AccountPage := CreateInputOptionPage(
    wpSelectTasks, 'Service account', '', 'Please select account for the service:',
    True, True);

  WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WMIService := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
  WbemObjectSet :=
    WMIService.ExecQuery('SELECT * FROM Win32_UserAccount');
  if not VarIsNull(WbemObjectSet) then
  begin
    for I := 0 to WbemObjectSet.Count - 1 do
    begin
      AccountPage.Add(WbemObjectSet.ItemIndex(I).Caption);
    end;
    AccountPage.SelectedValueIndex := 0;
  end;
end;

function GetAccount(Param: string): string;
var
  I: Integer;
begin
  for I := 0 to AccountPage.CheckListBox.Items.Count - 1 do
  begin
    if AccountPage.Values[I] then Result := AccountPage.CheckListBox.Items[I];
  end;
end;


Verwandte Fragen:

  • Inno Setup Erstellen Sie individuelle Verknüpfungen auf allen Desktops aller Benutzer
  • Inno Setup zum Erstellen eines Benutzers in Windows