Вот рабочий (у меня) вариант (в нём уже включено помещение списка юзеров в combo) :
Код:

#include <Array.au3>
#include <GUIConstants.au3>
Opt("RunErrorsFatal",0)
;Узнаём список пользователей
$admins = _AdminUsers()
Dim $AdminList
;Подготавливаем список пользователей для использования в combo
If IsArray($admins) Then
For $i = 1 to $admins[0]
Do
$AdminList = $admins[$i] & "|" & $AdminList
Until $admins[$i] <> $admins[0]
Next
EndIf
;что запускать
$what_to_run="setup.exe"
If IsAdmin() Then
;запуск программы
Run($what_to_run)
Else
;если не админ, то "рисуем" GUI
_GUI()
EndIf
Func _GUI()
GUICreate("Авторизация", 198, 125)
;фон окна
GUISetBkColor (0x00E0FFFF)
;лейблы
GUICtrlCreateLabel("Имя администратора", 25, 5)
GUICtrlCreateLabel("Пароль администратора", 25, 50)
;запуск и отмена скрипта
$ok = GUICtrlCreateButton("Ok", 25, 98, 70,20)
$cancel = GuiCtrlCreateButton ("Cancel",105,98,70,20)
;ввод имени
$us = @UserName
$in1 =GUICtrlCreateCombo ($us, 25, 25, 150, 20)
GUICtrlSetData($in1, $AdminList)
GUICtrlSetTip(-1,"введите имя любой учётной записи" & @CRLF & "имеюшей права Администратора")
;ввод пароля
$in2 = GUICtrlCreateInput ("", 25, 70, 150, 20, 0x20)
GUICtrlSetTip(-1,"введите пароль")
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
;считываем введённые данные
$User = GUICtrlRead($in1)
$Password = GUICtrlRead($in2)
Select
Case $msg = $ok
;Проверка был ли введён пароль вообще
If $Password = "" Then
MsgBox(48, "Ошибка", "Не был введён пароль")
ContinueLoop
EndIf
;инициализация запуска от имени админа
RunAsSet($User, "", $Password)
;проверка верны ли введённые записи на право обладания правами админа
If IsAdmin() Then
;запуск программы
Run($what_to_run)
If @error Then
MsgBox(16, "Ошибка", "Введен неправильный пароль или отсутствует файл "&$what_to_run&@LF&@LF&"Попробуйте еще раз.",5)
ContinueLoop
EndIf
Exit
EndIf
;закрытие окна
Case $msg = $cancel or $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
EndFunc
; Возвращает массив со счетчиком - состав локальной группы "Администраторы"
Func _AdminUsers()
Local $i, $res [1] = [0]
; читаем состав группы
Local $members = _NetLocalGroupGetMembers (@ComputerName, 'Администраторы')
; проверка на ошибки
If @error Then
MsgBox (16, 'Ошибка выполнения', 'Код ошибки:' & @error)
Exit
EndIf
If $members [0] >0 Then
; фильтруем только локальные учетные записи
For $i=1 To $members [0]
If StringRegExp ($members [$i], '^' & @ComputerName & '\\') Then
ReDim $res [$res[0]+2]
$res [0] = $res [0]+1
$res [$res[0]] = StringRegExpReplace ($members [$i], '^' & @ComputerName & '\\', '')
EndIf
Next
EndIf
Return $res
EndFunc
; Возвращает массив со счетчиком- состав локальной группы произвольного компьютера
Func _NetLocalGroupGetMembers($server, $group)
Local $i, $string, $res [1] = [0], $pointer= DllStructCreate ("ptr")
; Выполняем запрос к базе SAM
Local $ret = DllCall ("netapi32.dll", "int", "NetLocalGroupGetMembers", _
"wstr", "\\" & StringRegExpReplace ($server, '^\\+', ''), _
"wstr", $group, _
"int", 3, _
"ptr", DllStructGetPtr ($pointer), _
"int", -1, _
"int_ptr", 0, _
"int_ptr", 0, _
"int_ptr", 0 )
; Если произошла ошибка, то выход с кодом ошибки
If $ret[0]>0 Then
SetError ($ret)
Exit
EndIf
; Если есть результат, то обрабатываем каждый отдельно
If $ret[6]>0 Then
Local $buffer = DllStructCreate ("ptr[" & $ret[6] & "]", DllStructGetData ($pointer,1) )
For $i=1 To $ret[6]
$ret = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _
"int", 0, _
"int", 0, _
"ptr", DllStructGetData ($buffer, 1, $i), _
"int", -1, _
"str", "", _
"int", 0, _
"int", 0, _
"int", 0 )
$string = DllStructCreate("char[" & $ret[0] & "]")
$ret = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _
"int", 0, _
"int", 0, _
"ptr", DllStructGetData ($buffer, 1, $i), _
"int", -1, _
"ptr", DllStructGetPtr ($string), _
"int", $ret[0], _
"int", 0, _
"int", 0 )
ReDim $res [$res[0]+2]
$res [0] = $res [0]+1
$res [$res[0]] = DllStructGetData ($string,1)
Next
EndIf
; Чистим временные системные структуры
DllCall ("netapi32.dll", "int" ,"NetApiBufferFree", _
"ptr" , DllStructGetData ($pointer,1) )
Return $res
EndFunc