Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Другие темы раздела
CMD/BAT Настройка доступа к сетевой папке https://www.cyberforum.ru/cmd-bat/thread964866.html
Подскажите как настроить доступ к папке/файлу через командную строку. Т.е. например разрешить чтение, но запретить изменение. Находил через icacls, но преподаватель у универе хочет через службы...
CMD/BAT Выполнение команды при заданном условии
Кому-нибудь возможно поднадоел уже.))) Среда XPE. При загрузке на панели быстрого запуска по-умолчанию красуется ярлык (не важно какой). Единственный доступный мне способ избавиться от него -...
Как задать часовой пояс в винде из батника? CMD/BAT
Как задать часовой пояс в винде из батника?
CMD/BAT Формирование ежемесячного отчета об изменениях в рабочем каталоге (измененные файлы) Ребят помогите пожалуйста.Нужно очень! Разработать командный файл, который формировал бы ежемесячный отчет об изменениях в рабочем каталоге (файлы измененные). https://www.cyberforum.ru/cmd-bat/thread964507.html
CMD/BAT Создание папки с текущими датой и временем в имени с использованием контекстного меню https://www.cyberforum.ru/cmd-bat/thread963930.html
Приветствую форумчане. Такой вопрос: как реализовать корректно ? К примеру, если *.cmd файл с командой md %cd%\%date:~6,4%-%date:~3,2%.%date:~0,2% прикрутить к контекстному меню , то папка...
CMD/BAT Как разрезать один текстовый файл на несколько по шаблону?
Есть один текстовый файл (file.txt) в котором заключена информация на несколько html-файлов. Примерно такой: ------------------------------------------- <html> <title>1</title> <body>...
Постраничный вывод на экран содержимого нескольких текстовых файлов, заданных как параметры командного файла CMD/BAT
2. создать командный файл, который обеспечивает постраничное отображение на экране дисплея нескольких текстовых файлов, спецификация которого задана как параметр командного файла. Для перехода от...
CMD/BAT Вывод на экран дисплея содержимого нескольких текстовых файлов, заданных как параметры командного файла 1.создать командный файл, обеспечивает вывод на экран дисплея какого либо текстового файла, спецификация которого задана как параметр командного файла. после демонстрации работы созданного командного... https://www.cyberforum.ru/cmd-bat/thread963703.html
CMD/BAT Удаление и установка ПО скритпом групповой политикой при включении или выключении ПК https://www.cyberforum.ru/cmd-bat/thread963539.html
Написал батник который должен проверять при включении пользовательский комп на наличие 7-zip и удалять его если х64 версия ОС, если х86 - писать в лог для ручного удаления впоследствии. Также батник...
CMD/BAT Копирование папок, имена которых начинаются с определённого сочетания символов Добрый день! Есть папка Main, а в ней много папок. А есть папка Target Нужно скопировать из папки Main в папку Target все папки (и файлы в них), названия (папок) которых начинаются с type1 https://www.cyberforum.ru/cmd-bat/thread962821.html
Dragokas
Эксперт WindowsАвтор FAQ
17170 / 7224 / 866
Регистрация: 25.12.2011
Сообщений: 11,016
Записей в блоге: 16
30.12.2012, 03:49  [ТС] 0

Запуск скрипта с повышенными привилегиями [руководство]

30.12.2012, 03:49. Просмотров 142625. Ответов 45
Метки (Все метки)

Лучший ответ Сообщение было отмечено как решение

Решение

Элевация прав запуска BAT-файла (отображается диалог контроля учетных записей UAC)
Код: Dragokas

В ОС Windows Vista/7/8... запись в системные папки (такие как Windows, System32, корень диска C: ), запись в реестр (например, в улей HKLM) требует прав администратора.

Чтобы автоматически запускать батник с затребованием повышенных привилегий,
Вы можете воспользоваться одним из способов:

1) Через JScript-вставку без создания вспомогательного файла:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@set @x=0; /*
@echo off
ver |>NUL find /v "5." && if "%~1"=="" cscript.exe //nologo //e:jscript "%~f0"& exit /b
 
 
::
:: <--- Здесь код Вашей основной программы
::
 
 
pause
exit /B
 
:: Эту строку не трогать. Ниже ничего не писать!!!
*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
Из минусов обоих способов: батнику нельзя передавать аргументы запуска.


2) С использованием внешнего VBScript-сценария.

Приведенный пример создает временный VBS-скрипт, через который методом ShellExecute, verb - runas запускает повторно BAT-файл с повышенными правами.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
ver |>NUL find /v "5." && if "%~1"=="" (
  Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"1","","runas",1 >"%~dp0Elevating.vbs"
  cscript.exe //nologo "%~dp0Elevating.vbs" "%~f0"& goto :eof
)
 
 
::
:: <--- Здесь код Вашей основной программы
::
 
 
pause
Комментарий к коду

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@echo off
 
:: Проверяем пустой ли первый аргумент
:: Это нужно, чтобы не запустить процесс элевации дважды.
:: Аргумент становится = 1, когда запускается команда [URL="http://ss64.com/vb/shellexecute.html"]ShellExecute[/URL]
 Имя скрипта, Аргумент, Рабочий каталог,Глагол,Режим отображения окна
if "%~1"=="" (
:: Сохраняем скрипт в файл Elevating.vbs, который находится в папке %~dp0, т.е. рядом с батником
::Параметры такие: 
::Имя скрипта - передано аргументом из cscript.exe (см.строку кода ниже)
::Аргументы: 1 - аргумент для бат-файла, чтобы не запустить элевацию дважды
::Рабочий каталог: "" - по умолчанию, текущий.
::Глагол (verb): runas - запуск от имени Администратора.
::Режим отображения окна: 1 - Normal (обычные режим. Окно отображается).
  Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"1","","runas",1 >"%~dp0Elevating.vbs"
:: Запускаем сервер сценариев без отображение сведений о нем (//nologo), запускаем Elevating.vbs с аргументом = имени бат-файла с путем
  cscript.exe //nologo "%~dp0Elevating.vbs" "%~dpnx0"& Goto :eof
)
 
:: Удаляем Elevating.vbs
>nul del "%~dp0Elevating.vbs"
 
 
::
:: <--- Здесь код Вашей основной программы
::
 
 
:: Переходим в каталог с бат-файлом
:: При выполнении повышения прав рабочий каталог бат-файла автоматически сменяется на %windir%\system32
chdir /d "%~dp0"
 
::Пытаемся записать пустой файл в корень системного раздела
cd.>c:\test.log
 
::Если записанный файл существует - пишем ОК, то есть повышение прав удалось успешно.
if exist c:\test.log Echo OK.
 
 
pause


3) С использованием mshta (способ от ComSpec):

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
reg.exe query "HKU\S-1-5-19">nul 2>&1
if %errorlevel% equ 1 goto UACPrompt
 
::
:: <--- Здесь код Вашей основной программы
::
 
pause>nul
exit /b
 
 
:UACPrompt
mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "", "", "runas", 1) & Close()"
exit /b

Запуск скрипта с повышенными привилегиями [руководство]




Start Admin Console.cmd
Запускает новое окно консоли с повышенными правами и переходит в папку, где сам находится
Ожидает ввода команд от пользователя.

Bash
1
2
3
4
5
6
7
8
9
10
@set @x=0; new ActiveXObject('Shell.Application').ShellExecute ('cmd.exe','/K ' + '"' + WScript.ScriptFullName + '"' + ' Admin','','runas',1);/*
@echo off
if "%~1" neq "Admin" (
  cscript.exe //nologo //e:jscript "%~f0"
) else (
  cd /d "%~dp0"
)
exit /B
 
*/


Вернуться к обсуждению:
Запуск скрипта с повышенными привилегиями [руководство]
14
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2012, 03:49
Готовые ответы и решения:

Запуск bat скрипта с пониженными привилегиями
Привет ☺ Как в bat скрипте, который запускается с правами администратора прописать запуск...

Изменение рабочего каталога при запуске батника с повышенными привилегиями
C:\Users\adm&gt;echo Рабочий каталог - C:\Users\adm Рабочий каталог - C:\Users\adm никакого system32

Запуск скрипта с привилегиями администратора
Здравствуйте. Создал службу windows 10. Она должна запускать скрипт Powershell. Но что-то не...

Почему эта программа запускается с повышенными привилегиями?
Ресурса #24 нет, слой совместимости тоже не прописан, так откуда тогда знак щита? Как это у меня...

45
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.