Consultar lista de contas do Windows no Inno Setup
Dec 11 2020
Em meu projeto do Inno Setup, preciso permitir que o usuário escolha uma conta da lista de todas as contas locais em uma página personalizada. A conta selecionada será usada para instalar um serviço com credencial customizado. Como posso fazer isso?
Agradeço antecipadamente!
Respostas
1 MartinPrikryl Dec 11 2020 at 20:03
Você pode usar a classe WMIWin32_UserAccount para consultar a lista de contas.
[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;

Perguntas relacionadas:
- Inno Setup Crie atalhos individuais em todas as áreas de trabalho de todos os usuários
- Inno Setup para criar um usuário no Windows
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino