Что нового

Как запросить повышение прав в определенном участке кода Autoit?

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
Yashied [?]
А вы пробовали запускать скрипт с #RequireAdmin при выключенном UAC?
Я пробовал. Запрос не появляется, в остальном различий не заметил.
А что, существуют какие-то "подводные камни"?
 
Автор
K

kasper_sky

Antivirus
Сообщения
116
Репутация
1
Yashied [?]
А вы пробовали запускать скрипт с #RequireAdmin при выключенном UAC?
Пробовал.
Если скрипт запущен под админом в Win7, то #RequireAdmin просто не нужен - скрипт и так будет запущен с правами админа.
А вот если запустить под учетной записью Гостя - тут уже проблемы. Скрипт постоянно запускается и завершается.

Я уже думал насчет решения этой проблемы. Скорее всего, добавлю проверку на активность UAC.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Почему бы не воспользоваться ShellExecute()?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
kasper_sky сказал(а):
Что вы имеете ввиду?

Я выше уже написал:

Код:
ShellExecute('MyScript.exe', '', '', 'runas')


Это автоматически выведет диалог с логином и паролем, то, что и делает #RequireAdmin.

P.S

А вот понизить права будет уже сложнее...
 
Автор
K

kasper_sky

Antivirus
Сообщения
116
Репутация
1
Yashied
Тоже вариант.
Но в этом случае будет необходимо либо полностью перезапускать текущий скрипт, либо запускать еще один исполняемый файл.

Мне больше по душе вариант от ynbIpb - запись скрипта au3 в временную папку и запуск его же с помощью интерпретатора, встроенного в текущий исполняемый файл.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
kasper_sky [?]
запись скрипта au3 в временную папку и запуск его же с помощью интерпретатора, встроенного в текущий исполняемый файл.
только нужно учесть момент, если исполняемый код будет нуждаться во включаемых библиотеках, то функции из этих библиотек нужно будет заранее записывать в этот временный код. то есть это немного усложняет написание. в основном с расстановкой кавычек. вот подобный пример с включением временного кода http://autoit-script.ru/index.php/topic,8160.msg55253.html#msg55253
или придется носить включаемые библиотеки с программой и во временном коде указывать путь к ним..но нужно учесть еще, что многие библиотеки связаны друг с другом.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
kasper_sky [?]
Мне больше по душе вариант от ynbIpb - запись скрипта au3 в временную папку и запуск его же с помощью интерпретатора, встроенного в текущий исполняемый файл.
Этот вариант никак не конфликтует с вариантом от Yashied.

Код:
ShellExecute(@AutoItExe, '/AutoIt3ExecuteScript "' & $sExtra_Code_File & '"', '', 'runas')
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
CreatoR
а разве это не то же самое если в переменной
Код:
$sExtra_Code_File

уже будет указано
Код:
#RequireAdmin

если так, то тогда просто
Код:
Run(@AutoItExe, '/AutoIt3ExecuteScript "' & $sExtra_Code_File & '"')
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
joiner [?]
разве это не то же самое если в переменной
Код:
$sExtra_Code_File

будет указано
Нет, «/AutoIt3ExecuteScript» запускает скрипт, «#RequireAdmin» не является скриптом :smile:.
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
CreatoR [?]
«#RequireAdmin» не является скриптом
Он имел ввиду "уже будет указано в скрипте, путь к которому находится в переменной".
Мне, кстати, тоже интересно.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
InnI сказал(а):
Мне, кстати, тоже интересно.

kasper_sky сказал(а):
А вот если запустить под учетной записью Гостя - тут уже проблемы. Скрипт постоянно запускается и завершается.

Вообще, создание дополнительного скрипта во временной папке не самый грамотный подход. В идеале скрипт должен запускать сам себя с повышенными правами.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
InnI [?]
Он имел ввиду "уже будет указано в скрипте, путь к которому находится в переменной".
Судя по неверному использованию параметров Run, не уверен что это так.

Мне, кстати, тоже интересно.
Зачем играть в догадки, проверить так сложно? :scratch:
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
CreatoR [?]
проверить так сложно?
Так в том и дело, что проверял. И никаких "Скрипт постоянно запускается и завершается" не обнаружил. Появляется окно для ввода пользователя/пароля, ввожу и всё нормально работает. Вот и заинтересовало меня, что это за случаи, когда #RequireAdmin не работает? В справке об этом ничего не сказано.
 
Автор
K

kasper_sky

Antivirus
Сообщения
116
Репутация
1
InnI [?]
никаких "Скрипт постоянно запускается и завершается" не обнаружил. Появляется окно для ввода пользователя/пароля, ввожу и всё нормально работает
Выключите UAC и запустите скрипт под Гостем.
При включенном UAC под гостем все нормально - появляется окно ввода пароля для админа.
Win7 Pro
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
CreatoR [?]
Судя по неверному использованию параметров Run, не уверен что это так.
ну да, запятую не стер. результат копирования :smile:
я и имел ввиду что
Код:
$sExtra_Code_File

скрипт в котором уже есть запрос. я как раз и привел такой пример http://autoit-script.ru/index.php/topic,12098.msg78521.html#msg78521
 
Верх