Тихий запуск с правами администратора в Windows 5.x, 6.x/10

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off
У тебя AutoIt где лежит?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher
Как и скрипт, в корне %COMMANDER_PATH%.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off
Так попробуй:

Код: Выделить всё

TOTALCMD#BAR#DATA
%ADM%%AutoIt%
"%%COMMANDER_PATH%%\restart.au3" --restart
%COMMANDER_EXE%
Перезапустить ТС
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher
И в Win7x64, и в WinXP:
Line 0 (File "C:\Utilities\fm\%COMMANDER_PATH%\restart.au3"):
Error: Error opening the file.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

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

Вообще, конечно, непонятно, почему в разных системах поведение различается - ведь звёздочка тоталом обрабатывается и вырезается...

Skif_off,
Не проверял конкретно твою комстроку, но у меня и на 7 и на XP работает только такая аналогичная строка:

Код: Выделить всё

"%ADM%%COMMANDER_PATH%\cmdline.exe" "%COMMANDER_INI%"
И нигде не работает такая:

Код: Выделить всё

%ADM%"%COMMANDER_PATH%\cmdline.exe" "%COMMANDER_INI%"
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off
Как в пути может быть одновременно C:\Utilities\fm\ и %COMMANDER_PATH%? :shock:
И что у тебя в %AutoIt%?
MVV писал(а):т.к. они от текущей папки отсчитываются, а она непостоянна
У тебя поле "Путь запуска:" отломалось? :D
MVV писал(а):и во второе поле COMMANDER_PATH передавать бессмысленно, т.к. при повышении окружение не наследуется.
Вообще есть такое. Но вопрос в том, где не наследуется. В параметре комстроки или только в коде.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher писал(а):Как в пути может быть одновременно C:\Utilities\fm\ и %COMMANDER_PATH%? Shocked
И что у тебя в %AutoIt%?
Совершенно не представляю. В %AutoIt% у меня %COMMANDER_PATH%\AutoIt3.exe

MVV
На Win7x64 вот так не работает (Файл не найден!):

Код: Выделить всё

"%ADM%%AutoIt%" "%COMMANDER_PATH%\restart.au3"
"%ADM%%AutoIt%" "%COMMANDER_PATH%\restart.au3" --restart
зато вот так

Код: Выделить всё

%ADM%"%AutoIt%" "%COMMANDER_PATH%\restart.au3" --restart
работает.

А на WinXP да, срабатывает только так:

Код: Выделить всё

"%ADM%%AutoIt%" "%COMMANDER_PATH%\restart.au3" --restart
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off писал(а):В %AutoIt% у меня %COMMANDER_PATH%\AutoIt3.exe
А, ну тогда всё просто:

Код: Выделить всё

TOTALCMD#BAR#DATA
%ADM%%COMMANDER_PATH%\AutoIt3.exe
restart.au3 --restart
%COMMANDER_EXE%
Перезапустить ТС
%COMMANDER_PATH%\
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher
Переменную %AutoIt% хочу оставить, она зависит от разрядности ТС, а вот попробовать сократить командную строку после переноса скрипта в корень ТС как-то не подумал. Спасибо, сделал так, вроде срабатывает:
[cut]

Код: Выделить всё

TOTALCMD#BAR#DATA
%ADM%"%AutoIt%"
restart.au3 --restart
%COMMANDER_PATH%\ButtonBar\TCrestart2.ico
* по умолчанию
%COMMANDER_PATH%\
0
-1

TOTALCMD#BAR#DATA
%ADM%"%AutoIt%"
restart.au3 --wf %Z"%X%P" "%T"
%COMMANDER_PATH%\ButtonBar\TCrestart2.ico
* %P и %T
%COMMANDER_PATH%\
0
-1

TOTALCMD#BAR#DATA
%ADM%"%AutoIt%"
restart.au3 --wf --8664 %Z"%X%P" "%T"
%COMMANDER_PATH%\ButtonBar\TCrestart2.ico
* %P и %T, x86<>x64
%COMMANDER_PATH%\
0
-1

TOTALCMD#BAR#DATA
%ADM%"%AutoIt%"
restart.au3 --8664
%COMMANDER_PATH%\ButtonBar\TCrestart2.ico
* x86<>x64
%COMMANDER_PATH%\
0
-1
[/cut]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off писал(а):она зависит от разрядности ТС
Где?
В %AutoIt% у меня %COMMANDER_PATH%\AutoIt3.exe
Тут ни намёка на разрядность. Когда разбираем вопросы, где важна каждая мелочь, логично давать точный ответ. Покажи запись в autorun.cfg.
По логике это должно быть нечто подобное:

Код: Выделить всё

If %SYSINFO_OSARCH% = 64 Then
  SetEnv /EV- AutoIt %COMMANDER_PATH%\AutoIt3x64.exe
Else
  SetEnv /EV- AutoIt %COMMANDER_PATH%\AutoIt3.exe
Но в таком случае не вижу смысла в кавычках в первом поле. Зачем ты их ставишь?
Плюс ко всему ничего не мешает при

Код: Выделить всё

If %SYSINFO_OSARCH% = 64 Then
  SetEnv OSARCH x%SYSINFO_OSARCH%
Else
  SetEnv OSARCH
запускать таким образом:

Код: Выделить всё

TOTALCMD#BAR#DATA
%ADM%%COMMANDER_PATH%\AutoIt3%OSARCH%.exe
restart.au3 --restart
ButtonBar\TCrestart2.ico
* по умолчанию
%COMMANDER_PATH%\ 
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher писал(а):У тебя поле "Путь запуска:" отломалось?
Я крайне редко это поле задаю, и на то есть ряд причин. Часто нужно запускать именно в текущей папке, при этом я тоже довольно часто перехожу в папку с программой из кнопки через пункт cd её контекстного меню.
Вообще есть такое. Но вопрос в том, где не наследуется. В параметре комстроки или только в коде.
Не наследуется окружением запускаемого с повышением процесса, поэтому переменную необходимо передавать в раскрытом виде, а поле параметров этого не позволяет.
Skif_off писал(а):На Win7x64 вот так не работает (Файл не найден!):
Похоже, у нас очччень разные Win7x64, ибо у меня работает.

Код: Выделить всё

"%ADM%%AutoIt%" "%COMMANDER_PATH%\restart.au3" --restart

Код: Выделить всё

SetEnv AUTOIT %COMMANDER_PATH%\cmdline.exe
SetEnv пробовал и с /EV-, всё равно работает.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Часто нужно запускать именно в текущей папке
Для этого есть "%P".
MVV писал(а):при этом я тоже довольно часто перехожу в папку с программой из кнопки через пункт cd её контекстного меню
Отлично, в том числе для этого и нужен "Путь запуска". Вот если бы ты написал, что тебе нужно переходить к файлу (exe, скрипт), как я это делаю, то - другое дело.
MVV писал(а):Не наследуется окружением запускаемого с повышением процесса
Вот я и спрашиваю про момент, когда это окружение возникает.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Для этого есть "%P".
Это несколько иная сущность, ею рабочую папку процесса не задашь.
Отлично, в том числе для этого и нужен "Путь запуска".
Его надо задавать явно, и если его задать явно, то рабочая папка запускаемого процесса будет фиксирована. А с пустым полем и переход из контекстного меню работает, и рабочая папка текущая.
Вот я и спрашиваю про момент, когда это окружение возникает.
Возникает в недрах винды где-то в момент запуска процесса с повышением, точнее не скажу. :)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):ею рабочую папку процесса не задашь
Скриптом, утилитой типа nircmd почему нет?
MVV писал(а):Его надо задавать явно, и если его задать явно, то рабочая папка запускаемого процесса будет фиксирована.
Так если ты не задашь явно, то и перейти через меню в данном случае никуда не сможешь, ибо спереди %ADM%, не говоря уже про случаи, когда нужная программа идёт в качестве параметра (не первой в строке), а такого добра выши крыши.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher писал(а):Но в таком случае не вижу смысла в кавычках в первом поле. Зачем ты их ставишь?
Наверное, потому что путь, который может содержать пробелы, должен быть в кавычках?
MVV писал(а):Похоже, у нас очччень разные Win7x64, ибо у меня работает.
Не знаю, ничего особенного с ОСью не делал. Не ребутал недели две, но это вроде немного.
Ответить