在Inno Setup中查询Windows帐户列表

问题描述 投票:0回答:1

在我的 Inno Setup 项目中,我需要允许用户从自定义页面上的所有本地帐户列表中选择一个帐户。所选帐户将用于安装具有自定义凭据的服务。 我怎样才能做到这一点?

提前谢谢您!

inno-setup pascalscript
1个回答
2
投票

您可以使用WMI

Win32_UserAccount
来查询账户列表。

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

enter image description here


相关问题:

© www.soinside.com 2019 - 2024. All rights reserved.