Pacho
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Как в батнике запустить программу, чтобы при этом автоматически выдавался запрос на повышение прав? (Windows 7/Vista/2008) | Консольной команды не нашёл. Но нашёл как реализовать это через JScript: Код: var objShell = new ActiveXObject('Shell.Application'); objShell.ShellExecute('Программа.exe', 'параметры', '', 'runas', 1); | Можно встроить в командный файл. Данный коммандный файл перезапускает сам себя и, если он не был запущен от имени администратора, то выдаётся запрос на повышение прав (Windows Vista\2008\7). В Windows 2000\XP\2003 по идее должен вызывать диалоговое окно "Запуск от имени...": Код: @set @x=0 /* :: Эта строка должна быть первой :: Для защиты от зацикливания проверяем, чтобы коммандный файл был запущен с параметром "UAC". :: Если нет, то передаём управление в JScript, встроенный коммандный файл :: (последняя строка), и завершаем текущий коммандный файл @if not %1*==UAC* CScript.exe //nologo /e:JScript "%~f0" & exit /b :: Далее идут команды нашего коммандного файла fsutil fsinfo drives @pause :: Это основной текст скрипта JScript :: Перезапуск коммандного файла с запросом на повышение прав (с параметром "UAC" для проверки от зацикливания) @exit /b */ (new ActiveXObject('Shell.Application')).ShellExecute(WScript.ScriptFullName, 'UAC', '', 'runas', 1) | Можно встроить в любой командный файл, который требует выполнения с повышенными правами с включённым User Account Control в Windows Vista\2008\7 или от имени администратора/другого пользователя в Windows 2000\XP\2003. ЗЫ: Но неудобно, что во вновь запускаемом коммандном файле текущий каталог меняется на C:\Windows\system32 (из-за параметра 'runas').
---------- Нет судьбы, кроме той, которую мы выбираем. |
| Всего записей: 263 | Зарегистр. 02-04-2005 | Отправлено: 10:57 21-01-2010 | Исправлено: Pacho, 11:58 25-01-2010 |
|