Страница 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%"C:\Windows\notepad.exe"
Это уже НЕ работает:

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

%ADM%"C:\Windows\notepad.exe" 1.txt
Это тоже НЕ работает с пустой 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
Я, честно говоря, тоже. Поправил пост.