Как запустить файл vbs от имени администратора

Обновлено: 07.07.2024

Собратия по скриптингу, взываю к вам о мыслях Ваших благостных.
Потребность есть у меня ярлык создать скриптовым языком VBS, чтоб программу он от имени администратора запускал (UAC).
Решение одно мне пришло но не эстетичным видится мне оно. Прошу совета Вашего.
Вот мой вариант

2 Ответ от Rom5 2011-05-18 15:07:16

Для поддержки UAC я использовал возможности другого скриптового языка - AutiIt. Иформация о нем есть и на "Сером форуме".
AutiIt имеет для UAC специальную включаемую в код опцию, я некоторые свои VBS-наработки, вызывающие/активизирующие другие приложения, довольно быстро перенес на аутоит и усовершенствовал - работают они теперь и под XP и под Win7. Рекомендую.

В Вашем случае можно, например, сделать на AutiIt простейшеет приложение, запускающее полученную параметром программу уже с запросом подтверждения UAC в указанной директории с указаными параметрами окна, заодно можно и проконтролировать старт приложения и много прочего недоступного на vbscript. А ярлык сделать на строку вызова этой программы с передачей параметров.

3 Ответ от Xameleon 2011-05-18 15:31:24

  • Xameleon
  • Разработчик
  • Неактивен











2 Rom5: Может всё такие Aut o It, а не Aut i It ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

4 Ответ от Rom5 2011-05-18 17:47:41

2 Rom5: Может всё такие Aut o It, а не Aut i It ?

5 Ответ от Alexey 2011-05-18 21:11:36

Для поддержки UAC я использовал возможности другого скриптового языка - AutiIt. Иформация о нем есть и на "Сером форуме".
AutiIt имеет для UAC специальную включаемую в код опцию, я некоторые свои VBS-наработки, вызывающие/активизирующие другие приложения, довольно быстро перенес на аутоит и усовершенствовал - работают они теперь и под XP и под Win7. Рекомендую.

В Вашем случае можно, например, сделать на AutiIt простейшеет приложение, запускающее полученную параметром программу уже с запросом подтверждения UAC в указанной директории с указаными параметрами окна, заодно можно и проконтролировать старт приложения и много прочего недоступного на vbscript. А ярлык сделать на строку вызова этой программы с передачей параметров.

Спасибо за отзыв Rom5. С AutoIt я знаком и проблемы написать необходимый функционал нет, но в рамках моей текущей задачи создать ярлык необходимо именно из VBScript/Jscript.

6 Ответ от BeS Yara 2011-05-19 11:36:48

  • BeS Yara
  • Разработчик
  • Неактивен

Если в ярлык в любом случае прописывается не программа, то почему бы не создать скрипт (например в C:\RunProgAs.vbs) вроде такого:

Тогда в свойствах ярлыка указать:

Если требуется создавать полноценный ярлык с включением запуска от другой учётки, то прийдётся работать с файлом ярлыка в бинарном виде.

2.1.1 LinkFlags
<. >
N (RunAsUser): The application is run as a different user when the target of the shell link is activated.

Но для меня это задачка требующая длительного отвлечения от забот насущных, а "Времени не хватает. :-(" (с) Евген

7 Ответ от Alexey 2011-05-19 15:29:15 (изменено: Alexey, 2011-06-08 19:42:23)

Если требуется создавать полноценный ярлык с включением запуска от другой учётки, то прийдётся работать с файлом ярлыка в бинарном виде.
н

Спасибо за наводку, все получилось как надо.

8 Ответ от JSmаn 2011-05-19 23:50:40

  • JSmаn
  • Администратор
  • Неактивен











Срочно в Коллекцию :-)

9 Ответ от Xameleon 2011-05-20 15:35:33

  • Xameleon
  • Разработчик
  • Неактивен











Решил дополнить тему. Вдруг кто будет искать про UAC более подробно

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

10 Ответ от mozers 2017-02-11 19:34:36

  • mozers
  • Разработчик
  • Неактивен











Ну тогда и я добавлю ссылку на связанную тему на нашем форуме, содержащую простое и нестандартное решение (а ля sudo) для запуска любых прог с ком-строки с повышенными правами.

Может кто-нибудь помочь мне с запуском VBS от себя, но с правами администратора? Мне нужно переименовать компьютер с Windows 8 через VBScript, но это возможно, только если я запускаю свой скрипт через командную строку администратора (CMD → Запуск от имени администратора → runScript.vbs). Если я запускаю скрипт с классическим CMD, компьютер не переименовывается.

Моя идея состоит в том, чтобы запустить скрипт с правами пользователя, без параметров, и, если параметров нет, скрипт перезапустится сам с правами администратора и с параметром в качестве идентификатора "Я администратор".

Кто-нибудь знает, как я могу это сделать?

Редактировать:

Я попробовал это:

Если на компьютере активировано UAC, что-то вроде этого должно работать:

Добавьте это в начало файла:

ответил(а) 2014-03-14T21:57:00+04:00 7 лет, 8 месяцев назад

веселый командный файл lil

ответил(а) 2014-11-26T08:22:00+03:00 6 лет, 12 месяцев назад

`Мой путь к файлам vbs:

- от поиска google и некоторой настройки, работающей для меня

Настройка приложений для запроса повышенных прав:

Программы могут быть настроены так, чтобы всегда запрашивать возвышение на уровне пользователя через настройки реестра в HKCU. Эти параметры реестра эффективны "на лету", поэтому их можно установить сразу перед запуском конкретного приложения и даже удалить, как только приложение будет запущено, если это необходимо. Просто создайте "String Value" в разделе "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" для полного пути к исполняемому файлу со значением "RUNASADMIN". Ниже приведен пример CMD.

ответил(а) 2014-05-13T10:15:00+04:00 7 лет, 6 месяцев назад

Это универсальное и лучшее решение для этого:

1) Ввод параметров невозможен.
2) Количество аргументов не изменяется после повышения до администратора, и затем вы можете проверить их, прежде чем поднять себя.
3) Вы по-настоящему и сразу узнаете, запускается ли скрипт от имени администратора. Например, если вы вызываете его из записи удаления с панели управления, функция RunAsAdmin не будет запускаться без необходимости, поскольку в этом случае вы уже являетесь администратором. То же самое, если вы вызываете его из сценария, уже повышенного до администратора.
4) Окно сохраняется в его текущем размере и положении, как и должно быть.

1) Параметр "Рабочий каталог" не действует, если параметром "глагол" является "runas".

"Vbs, whs, js скрипты для администратора"

22 июля 2008

Как можно запустить скрипт?

Расмотрим процесс запуска самого простого скрипта (сценария). Для этого нужно на рабочем диске выделить место для хранения скриптов, пусть это будет диск c: и папка Script. Выполняются скрипты с помощью серверов сценариев, которые переводят команды текста в исполняемый код.

Интерпретаторы в Windows представлены двумя файлами: wscript.exe и cscript.exe. Оба позволяют работать с VBScript и JScript и применять все возможности административных скриптов. Отличия:

- cscript - ориентировано на командную строку, вывод - на консоль.

Отличия можно увидеть наглядно на примерах выполнения команды. Создадим самый простой скрипт.

Создаем файл vbs.

Вызовите проводник (чтобы открыть проводник, нажмите кнопку Пуск и выберите команды Программы, Стандартные и Проводник ), зайдите в пункт меню "Сервис\Свойства папки" и убедитесь, что у вас отключена галочка.

Выбираем диск c:, каталог Script и вставляем текстовый файл и переименувываем его в hello.vbs.

В сам файл внесем текст:

Рассмотрим варианты запуска этого скрипта.

1. Запуск скрипта с командной строки с помощью утилиты CScript.exe

Для запуска нашего скрипта с командной строки нужно вызвать консоль командной строки. В операционной системе выполните "Пуск\Выполнить. " и наберите cmd.exe. У вас вызовется консоль командной строки.

В консоле командной строки выполните команду CScript.exe c:\script\hello.vbs

В приложении 1 дан список ключей, для выполнения csript.exe. Допустим нам не хочется, чтобы выводился в командную строку логотип сервера сценариев, для этого надо запустить сценарий с командной CScript.exe c:\script\hello.vbs //Nologo.

2. Запуск скрипта с командной строки с помощью утилиты WScript.exe

3. Запуск скрипта используя команду"Пуск\Выполнить. "

при помощи утилиты WScript.exe

В операционной системе нажав "Пуск" и затем "Выполнить" выполним скрипт набрав ту же команду, что и в предыдущем примере: WScript.exe c:\Script\hello.vbs. Появится такое же окошко, что и в предыдущем примере.

4. Запуск скрипта с помощью файлового менеджера.

Выполнить скрипт можно с помощью любого файлового менеджера. Запустим Explover, выбирем диск c:, зайдем в папку Script и выполним файл hello.vbs нажав на нем двойной щелчок.

Приложения

Приложение 1

Запуск скриптов с помощью сервера скриптов для командной строки csript.exe

Для выполнения сценариев с помощью сервера сценариев для командной строки предусмотрен следующий синтаксис:

cscript [имя_сценария] [параметры_сервера] [аргументы_сценария]

  • имя_сценария — имя файла сценария, включая путь и расширение.
  • параметры_сервера — ключи командной строки, задающие различные свойства сервера сценариев Windows. Параметр сервера всегда начинается с двух косых черт (//).
  • аргументы_сценария — ключи командной строки, которые передаются в сценарий. Аргумент сценария всегда начинается с одной косой черты (/).
    Примечания

Все параметры являются необязательными, однако нельзя задать аргументы сценария, не задав сценарий. При отсутствии аргументов сценария или самого сценария программа Cscript.exe выведет описание синтаксиса команды и предусмотренные ключи.
Ключи сервера сценариев для командной строки (см. таблицу).

Copyright 2008 Новопашин Владимир. Все права защищены.

Может ли кто-нибудь помочь мне запустить vbs от самого себя, но с правами администратора? Мне нужно переименовать компьютер с Windows 8 через VBScript, но это возможно, только если я запустил свой сценарий через командную строку администратора (CMD → Запуск от имени администратора → runScript.vbs). Если я запускаю сценарий с классической CMD, компьютер не переименовывается.

Моя идея состоит в том, что я запускаю скрипт с правами пользователя, без параметров, и если нет параметра, скрипт перезапускается с правами администратора и с параметром в качестве идентификатора «Я админ».

Кто-нибудь знает, как я могу это сделать?

Изменить:

Если на компьютере включен UAC, должно работать что-то вроде этого:

Настройка приложений для постоянного запроса повышенных прав:

Программы можно настроить так, чтобы они всегда запрашивали повышение прав на уровне пользователя через настройки реестра в HKCU . Эти параметры реестра действуют «на лету», поэтому их можно установить непосредственно перед запуском конкретного приложения и даже удалить, как только приложение будет запущено, если это необходимо. Просто создайте "String Value" под "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" для полного пути к исполняемому файлу со значением "RUN AS ADMIN" . Ниже приведен пример CMD.

Это универсальное и лучшее решение для этого:

1) Внедрение параметров невозможно.
2) Количество аргументов не меняется после повышения до администратора, и вы можете проверить их, прежде чем повышать свой уровень.
3) Вы знаете по-настоящему и сразу, если скрипт запускается от имени администратора. Например, если вы вызываете его из записи об удалении панели управления, функция RunAsAdmin не будет запускаться без необходимости, потому что в этом случае вы уже являетесь администратором. То же самое, если вы вызываете его из скрипта, который уже имеет права администратора.
4) Окно сохраняет свой текущий размер и положение, как и должно быть.
5) Текущий каталог не меняется после получения административных прав.

Читайте также: