Что нового

Как отключить предупреждения UAC (Win7) при запуске AutoIt скриптов

serzzz

Новичок
Сообщения
18
Репутация
0
Здраствуйте,такой вопрос

Можно ли обойти Windows7 User Account Control settings (UAC) и запустить фаил с помощью AutoIt.
При включеном UAC Вин7 спрашивает точно ли нужно запустить этот фаил, нажимаешь да и все запускается.

Ставил UAC ползунок на Never Notify, запускал руками ничего не спрашивает и все работает, а через Autoit программа все равно останавливается, я думаю после рестарта может и пойдет, не пробовал, но вариант на всех компах отрубать UAC не совсем мне нравится.

Может есть другие способы? Поделитесь опытом.
 

SyDr

Сидра
Сообщения
651
Репутация
158
Re: Windows7 c User Account Control settings

Если AutoIt запущен с правами администратора, то он может запускать (что и делает) другие программы с правами администратора. В противном случае нет.

Но вообще, третий абзац что-то странное :smile:

Если добавишь #RequireAdmin - запрос UAC будет выдан для повышения прав AutoIt. После получения прав, все остальные приложения из него будут запускаться с правами администратора.
 

sss

Продвинутый
Сообщения
332
Репутация
96
Re: Windows7 c User Account Control settings

И вот сразу ссылка "Пример запуска себя с админ-правами"
http://autoit-script.ru/index.php?topic=2446.0
 
Автор
S

serzzz

Новичок
Сообщения
18
Репутация
0
Sky-Walker, спасибо за ссылку.
Я права админа имею. Но UAC все равно задает вопросы.
Вариант где нужно вводить пороль админа чтобы запустить программу не катит, потому что простые пользователи пароль не знают.
На ХР таких проблем нет, все запускается без тормозов и без прав..

Почитал хелп Аутоит-а раздел: AutoIt on Windows Vista
Так как я понял полюбому нужно права давать, если их нет.


-------
http://www.autoitscript.com/forum/topic/124924-uac-problem/page__p__872046__hl__uac__fromsearch__1#entry872046

КАФУ пост#AutoIt3Wrapper_Res_requestedExecutionLevel=highestAvailable will always prompt a UAC request, changed to #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker which works just as fine (without the UAC prompt crap).

Это интересно, но как запустя узе Autoit скрипт в нем вызвать Run('c:\folder\test.exe','c:\folder') и чтобы UAC в етот момент test.exe пропускал без предупреждений или требований на права админа.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Просто интересно, а зачем вам вообще UAC понадобился? Отключить предупреждения нельзя?
 
Автор
S

serzzz

Новичок
Сообщения
18
Репутация
0
Привет всем.

UAC не есть зло, поетому отрубать не хочется, да и компов не мало.

А в коде можно указать как-то, чтобы UAC именно в тот момент не срабатывал? Или это только можно будет сделать путем выключения UAC. Но для этого нужно будет иметь права админа. :-X

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
;~ #AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
;~ #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
;~ #AutoIt3Wrapper_Res_requestedExecutionLevel=highestAvailable
;~ #RequireAdmin


#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test Install", 441, 226, -1, -1)
$Button1 = GUICtrlCreateButton("Test install 1", 48, 24, 353, 65, $WS_GROUP)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("Test install 2", 48, 112, 353, 65, $WS_GROUP)
GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


$Test_Install_dest = "\\fs\Install\Tools\Folder\test.exe" ; где источник
$Test_INI_file = "\\fs\Install\Tools\Folder\test.ini" ; где источник
$Test_Install_coped = "C:\Folder\789.ini"; для проверки был ли перед этим установлен


GUISetState()

Do
	$nMsg = GUIGetMsg()
	Select

		Case $nMsg = $Button1 ; Первый выбор. 1-ый линк
		GUIDelete()
		
		IF FileExists($Test_Install_coped) Then ; проверка есть ли такой каталог на С диске с фаилом 789.ini
			FileCreateShortcut("C:\Folder\test.exe", @DesktopDir &"\Test install 1.lnk",'C:\Folder',"/CurrentUser:Index") ; если есть 789.ini создает только линк
			MsgBox ( 0, "Test install", "Test install 1 link created")
		Else ; если нет 789.ini, то создаем папку, копируме фаилы, запускаем ТЕСТ.ЕХЕ, создаем линк на рабочем столе и ждем завершения программы
			DirCreate("C:\Folder")
			_FileCopy($Test_Install_dest,"C:\Folder")
			_FileCopy($Test_INI_file,"C:\Folder")
			Run('C:\Folder\test.exe', 'C:\Folder')
			FileCreateShortcut("C:\Folder\test.exe", @DesktopDir &"\Test install 1.lnk",'C:\Folder',"/CurrentUser:Index")
			_InstallComplited()
		EndIf


		Case $nMsg = $Button2 ; как и $Button1 только другой линк
		GUIDelete()
		IF FileExists($Test_Install_coped) Then
		   FileCreateShortcut("C:\Folder\test.exe", @DesktopDir &"\Test install 2.lnk",'C:\Folder',"/CurrentUser:Query")
		   MsgBox ( 0, "Test install", "Test install 2 link created")
		Else
			DirCreate("C:\Folder")
			_FileCopy($Test_Install_dest,"C:\Folder")
			_FileCopy($Test_INI_file,"C:\Folder")
			Run('C:\Folder\test.exe', 'C:\Folder')
			_InstallComplited()
		EndIf

		Case $nMsg = $GUI_EVENT_CLOSE
			Exit
	EndSelect
Until $nMsg = $GUI_EVENT_CLOSE or $nMsg = $Button1  or $nMsg = $Button2

;~ функция копирования
Func _FileCopy($fromFile,$tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)
EndFunc
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Верх