2amel27
Цитата:
Зато теперь можно смело замахнуться на всю линейку NetApi32
|
(страница 44)
весь сыр бор был из-за GUI авторизации запуска от имени админа.
повторю задачу:
1.Требуется запустить какой либо setup.exe, если пользователь не админ - нарисовать GUI с полем имени и пароля для авторизации запуска (конечно можно воспользоваться стандартным запуском нажав shift но хочется реализовать задачу при помощи AutoIt)
2.В комбо боксе приводим список учёток обладающими правами для установки т. е. админов
3.При неправильном вводе пароля - выдать сообщение об ошибке НЕ закрыв GUI
повторю код
Код:

#include <GUIConstants.au3>
Opt("RunErrorsFatal",0)
;что запускать
$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, "admin|qwerty|Администратор|Винни-Пух")
GUICtrlSetTip(-1,"введите имя любой учётной записи" & @CRLF & "имеюшей права Администратора")
;ввод пароля
$in2 = GUICtrlCreateInput ("solo11", 25, 70, 150, 20, 0x20)
GUICtrlSetTip(-1,"введите пароль")
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
;считываем введённые данные
$out1 = GUICtrlRead($in1)
$out2 = GUICtrlRead($in2)
Global $user = $out1, $pass = $out2
Select
Case $msg = $ok
;инициализация запуска от имени админа
RunAsSet($user, "", $pass)
;проверка верны ли введённые записи на право обладания правами админа
if IsAdmin() Then
;запуск программы
Run($what_to_run)
If @error Then
MsgBox(16, "Ошибка", "Введен неправильный пароль или отсутствует файл "&$what_to_run&@LF&@LF&"Попробуйте еще раз.",5)
EndIf
EndIf
;закрытие окна
Case $msg = $cancel
ExitLoop
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
EndFunc
третий пункт не выполняется

PS с оболочками только только начал разбираться, многое не понимаю. Помогите PLS