Interroger la liste des comptes Windows dans Inno Setup

Dec 11 2020

Dans mon projet Inno Setup, je dois autoriser l'utilisateur à choisir un compte dans la liste de tous les comptes locaux sur une page personnalisée. Le compte sélectionné sera utilisé pour installer un service avec des informations d'identification personnalisées. Comment puis-je faire ça?

Merci d'avance!

Réponses

1 MartinPrikryl Dec 11 2020 at 20:03

Vous pouvez utiliser la classe WMIWin32_UserAccount pour interroger la liste des comptes.

[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;


Questions connexes:

  • Inno Setup Créez des raccourcis individuels sur tous les postes de travail de tous les utilisateurs
  • Inno Setup pour créer un utilisateur sous Windows