Страница 1 из 4
Тихий запуск с правами администратора в Windows 5.x, 6.x/10
Добавлено: Пт фев 12, 2016 01:46
LonerD
Некоторые программы под Windows v6.x (и уже 10.х) могут нормально работать только если запускать их с правами администратора. Изредка попадаются умные (типа Autoruns), которые при запуске от пользователя ругнутся и сами себя перезапустят с нужными правами. Но большинство запускаются и не работают вообще или работают неполноценно.
В то же время на ХР им свистопляски не нужны.
Ищу простой способ тихо запускать программы на Win 6.x/10.x с правами администратора, а в Win 5.x - с обычными правами.
Звёздочка перед запускаемой программой
cmd=*%commander_path%\Utilities\Program.exe
даёт желаемый результат в Win 6.x/10.x, но под ХР вызывает нежелательный диалог выбора пользователя, от имени которого программу нужно запустить.
Программа Sudo - вызывает тот же эффект...
Знаю решение "Назначить версии ОС на переменные окружения через плагин Autorun, а потом через батник запускать программы с правами администратора или без оных в зависимости от ОС". Но это решение не отличается элегантностью.
Какие ещё варианты?

Добавлено: Пт фев 12, 2016 02:17
Flasher
LonerD писал(а):а потом через батник запускать программы
Зачем?
Код: Выделить всё
StrMid OSVer %SYSINFO_OSVERSION% 5
If %OSVer% = 2000 Or %OSVer% = XP Or %OSVer% = 2003 Or %OSVer% = 2003R2 Then
SetEnv ADM
Else
SetEnv ADM *
После в строках "Команда:" подставляешь %ADM% вместо * и
тихо радуешься.
Добавлено: Вт ноя 08, 2016 10:15
MVV
В упор не могу понять, как может работать раскрытие пустой переменной окружения, когда системная функция раскрытия переменных окружения тупо оставляет пустые и отсутствующие переменные как есть... И почему оно то работает, то нет...
Это работает с пустой
ADM:
Это уже НЕ работает:
Это тоже НЕ работает с пустой
ADM, и при запуске блокнота чётко видно, что пустая
TEST_VAR тоже не раскрывается:
Код: Выделить всё
%ADM%"C:\Windows\notepad.exe" %TEST_VAR%.txt
Добавлено: Вт ноя 08, 2016 10:19
Flasher
А *"C:\Windows\notepad.exe" 1.txt работает?
И зачем в кавычки брать, там же пробелов нет?
Добавлено: Вт ноя 08, 2016 10:21
MVV
Да, *"C:\Windows\notepad.exe" 1.txt прекрасно работает. А в кавычки я взял, т.к. думал поначалу, что не запускается из-за того, что звёздочке нужны кавычки, если есть аргументы.
Добавлено: Вт ноя 08, 2016 10:25
Flasher
А если параметр перенести в след. поле?
Добавлено: Вт ноя 08, 2016 10:32
MVV
Тогда я не смогу раскрыть в нём переменную, т.к. тотал раскрывает их только в первом поле.
Добавлено: Вт ноя 08, 2016 10:34
Flasher
Пример такой жизненной потребности можно?
Добавлено: Вт ноя 08, 2016 11:07
MVV
Тут в первую очередь интересен сам факт наличия проблемы.
Примеров может быть много, не так уж и редка необходимость подстановки переменных окружения в комстроку, и далеко не всегда запускаемая программа может раскрыть их сама, особенно если это переменные в окружении тотала, которых в окружении запущенной от админа программы не будет в принципе.
Добавлено: Вт ноя 08, 2016 11:15
Flasher
Факт, может, и интересен, но что толку. Это либо Гислеру писать о поддержке либо принять сам факт.
Внутренние же переменные ТС во многих случаях легко заменяются относительными путями, поэтому я как-то обхожусь.
Меня всегда вопрос допустимости интересовал куда в меньшей степени, чем вопрос необходимости.
Добавлено: Вт ноя 08, 2016 11:34
MVV
Собственно,
написал, интересно, что он ответит.
А переменные я имел в виду не внутренние, а просто те, которые определены в окружении тотала (сверху или через Autorun), но не глобально.
Добавлено: Вт ноя 08, 2016 12:06
Flasher
Хорошо, что написал. Посморим на реакцию, если она вообще будет.
Я понял, что в окружении. Чем они не
внутренние?
Они же переменные
внутреннего окружения TC.
Добавлено: Вт ноя 08, 2016 14:28
Skif_off
Что-то я с этой фичей запутался: если использовать
%ADM% вот так
Код: Выделить всё
%ADM%"%AutoIt%" "%COMMANDER_PATH%\restart.au3" --restart
то работает в Win7x64, но не работает в WinXP, а если сделать так
Код: Выделить всё
"%ADM%%AutoIt%" "%COMMANDER_PATH%\restart.au3" --restart
то в Win7x64 выдаёт ошибку, зато работает в WinXP.
Почему? И как сделать, чтобы работало везде?
Добавлено: Вт ноя 08, 2016 14:39
Flasher
Skif_off
А я что-то запутался в постановке твоего вопроса.

Добавлено: Вт ноя 08, 2016 14:50
Skif_off
Flasher
Я, честно говоря, тоже. Поправил пост.