Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.72/381: Рейтинг темы: голосов - 381, средняя оценка - 4.72
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
1

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

20.10.2012, 17:40. Просмотров 72177. Ответов 35
Метки нет (Все метки)

Как запустить Batch-файл от имени Администратора (с повышенными правами).

Вариант 1) Правая кнопка мыши по Batch-файлу "Запуск от имени администратора".

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


Вариант 2) Сначала запустить командную строку (см. ниже), а в ней запустить на исполнение Batch-файл.
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2012, 17:40
Ответы с готовыми решениями:

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

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

Запуск скрипта с правами администратора
Доброго времени суток! Есть система: WinXP (SP3). Машина входит в домен. На...

Запуск VBS-скрипта из батника
Не не не, я не совсем нуб =) В бат-файле несколько раз вызывается вбс-скрипт....

Запуск скрипта с правами администратора для юзера
Всем привет. Нужна помощь. Имеются два небольших скрипта: один включает...

35
alpap
1457 / 1173 / 382
Регистрация: 26.04.2015
Сообщений: 4,130
04.05.2018, 20:21 21
Цитата Сообщение от GarfieldX Посмотреть сообщение
Проблема в доступе к ветке реестра HKEY_CURRENT_USER
получив туда доступ что не получается сделать дальше?
0
GarfieldX
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 7
04.05.2018, 20:21 22
Дело не в доступе, а в расположении. Для каждого пользователя HKEY_CURRENT_USER свой.
Это как, например, %appdata% - попробуйте по такой относительно ссылке попасть в аналогичную папку другого пользователя.

Т.е. никаких чудес. Есть пользовательская учетка из под которой происходит работа, есть админская учетка на том же компе. При запуске скрипта нужно чтобы в том числе прописались некоторые настройки в обозначенной ветке реестра и выполнились определенные действия для которых требуются админские права. При этом если запускать от имени админа, то весь скрипт будет выполнятся с учетом этого.
Пока что назрел вариант как то проверять права доступа, если нужно, то генерить некий bat-ник с добавлением юзера в группу Администраторы, потом запускать основной скрипт уже от имени юзверя, затем убирать его из группы. Но это как кривоватенько получается. Если что не так, то юзер так и останется в админах. Хотелось бы просто повышение полномочий текущего пользователя в рамках сессии выполнения скрипта. Т.е. запросил повышение, ввел данные аккаунта, которые это позволяют и продолжил под текущим юзверем.
0
alpap
1457 / 1173 / 382
Регистрация: 26.04.2015
Сообщений: 4,130
04.05.2018, 20:45 23
Цитата Сообщение от GarfieldX Посмотреть сообщение
попробуйте по такой относительно ссылке попасть в аналогичную папку другого пользователя
Windows Batch file
1
2
3
4
5
6
@echo off
call set "spath=%%appdata:%username%=Vasya%%"
pushd "%spath%"
 echo код
popd
pause
Добавлено через 2 минуты
естественно под админом, а имена могу в цикле перебрать, подставлять и заходить в каждую по очереди - это ведь надо.
0
GarfieldX
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 7
04.05.2018, 21:38 24
Неудачный пример получился. Забыл что так можно.
Но как обратиться из vbs к упомянутой ветке реестра другого пользователя так и не нашел.
По сути только в одном месте скрипта закавыка...
0
GarfieldX
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 7
10.05.2018, 16:29 25
В общем вариантов решений было два:
1. Повысить права конкретного юзера и спокойно выполнять скрипт под его учеткой. Именно повысить права, похоже, не возможно. Была мысль сначала добавлять юзера в группу "Администраторы" (если его там нет), вызывать скрипт, убирать юзера из группы. С точки зрения здравого смысла не так все плохо, ведь исходим из того, что пользователь и админ - одно лицо, которое работает под обычной учеткой. Но тем не менее, все равно не аккуратненько как то. Мало ли, вдруг в это же время какая то фигня случится, а тут полные права у пользователя.
2. Переделать скрипт чтобы работать с реестром и прочими папками связанными с заданным пользователем. Так и сделал. При запуске через bat-ник генерится скрипт vbs для запроса админских прав (ShellExecute runas) и в качестве параметра передается имя запустившего пользователя. Где лежат HKEY_CURRENT_USER тоже удалось найти.
0
Eskander88
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 120
03.08.2018, 17:31 26
Подскажите пожалуйста, как запустить bat-скрипт через ярлык?

У меня есть скрипт C:\scripts\file.bat и ярлык на него C:\scripts\file.bat.lnk в котором указано "Запуск от имени администратора". Как можно запустить батник используя ярлык? Сейчас если выполнить команду
Bash
1
C:\scripts\file.bat.lnk
возвращает:
Bash
1
2
'S:\apache\bin\restart.bat.lnk' is not recognized as an internal or external command,
operable program or batch file
Добавлено через 10 минут
для решения задачи в принципе достаточно и запуска самого C:\scripts\file.bat от Имени Администратора. Скажем в интернете предлагают использовать RUNAS
Bash
1
runas /user:%computername%\%username% C:\scripts\file.bat
Однако такая команда требует ввода пароля, а у меня он в системе не установлен. Нажатие Enter не помогает
0
alpap
1457 / 1173 / 382
Регистрация: 26.04.2015
Сообщений: 4,130
03.08.2018, 19:33 27
Цитата Сообщение от Eskander88 Посмотреть сообщение
Как можно запустить батник используя ярлык?
как и любую программу:
ПКМ по bat - создать ярлык, в свойствах ярлыка поставить галку запуска от имени админа и стандартно ЛКМ по ярлыку, это же прописные истины работы пользователя даже не имеющие отношения к программированию.
0
Eskander88
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 120
03.08.2018, 19:49 28
Цитата Сообщение от alpap Посмотреть сообщение
как и любую программу:
ПКМ по bat - создать ярлык, в свойствах ярлыка поставить галку запуска от имени админа и стандартно ЛКМ по ярлыку, это же прописные истины работы пользователя даже не имеющие отношения к программированию.
я не слепой.. такой же ответ в заголовке темы... меня интересует программный способ... да и какой вообще тогда смысл в скриптах и автоматизации, когда сидишь и в ручную тыкаешь, хотя для данной задачи я бы согласился и на всплывающее окно UAC для подтверждения..

я не могу запустить кликом мыши потому, что мне нужно выполнить скрипт в другой программе с поддержкой технологии WSH, которая может запустить что-нибудь на ПК вроде Win+R

но как ей передать команду, чтобы запустить .lnk-файл?
0
alpap
1457 / 1173 / 382
Регистрация: 26.04.2015
Сообщений: 4,130
03.08.2018, 21:28 29
Eskander88
создавать ярлыки bat не умеет и тогда есть смысл оставить его в покое в пользу чего-то более подходящего для данной задачи.
0
FlasherX
524 / 242 / 98
Регистрация: 06.06.2017
Сообщений: 1,008
03.08.2018, 22:41 30
Eskander88
Не улавливаю логики. Что ярлык, что батник — суть одна, сделал один раз и пользуйся до бесконечности. При чём тут автоматизация?
И какой смысл запускать скрипт из сценария, если можно всё в скрипте сделать?
0
Eskander88
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 120
04.08.2018, 08:26 31
Цитата Сообщение от FlasherX Посмотреть сообщение
Не улавливаю логики. Что ярлык, что батник — суть одна, сделал один раз и пользуйся до бесконечности. При чём тут автоматизация?
И какой смысл запускать скрипт из сценария, если можно всё в скрипте сделать?
ну как же... в ярлыке же пометка, что скрипт "запустить от Имени Администратора".. а сами батники понятное дело можно запустить прямой командой вроде:
Bash
1
cmd.exe /k "C:\file.bat"
но часть инструкции требуют повышения привелегий.. на сам батник нельзя повесить какую-то пометку, что он доверенный и можно запускать без ограничений (ну может быть где-то глубоко в реестре или secpol.msc , gpedit.msc - мне неизвестно..)
так то хоть понятно?
0
FlasherX
524 / 242 / 98
Регистрация: 06.06.2017
Сообщений: 1,008
04.08.2018, 08:44 32
Не особо. Я задал два вопроса. Не могу понять, на какой из них отвечено и отвечено ли вообще.

Плюс к ним: "другой программе с поддержкой технологии WSH" — это не про wscript/cscript? А про что? Не о скрипте речь?
0
Eskander88
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 120
04.08.2018, 08:59 33
а вы можете ответить на такой вопрос: что написать в bat-файле по пути C:\file.bat (можно .vbs ), чтобы можно было выполнить произвольные bat-инструкции в режиме "от имени Администратора"?

При условии, что этот файл будет открываться автоматически другой программой путём генерации команды к оболочке системы. Эти события создаваемые программой полностью эквивалентны набронному
Bash
1
cmd.exe /k C:\file.bat
0
FlasherX
524 / 242 / 98
Регистрация: 06.06.2017
Сообщений: 1,008
04.08.2018, 09:19 34
Варианты записей из bat разобраны на первой странице.
А что касаемо ярлыка, то стоило перед путём к батнику %ComSpec% /c прописать.
Цитата Сообщение от Eskander88 Посмотреть сообщение
этот файл будет открываться автоматически другой программой путём генерации команды к оболочке системы
Тогда запускайте эту программу тоже от админа.
1
Eskander88
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 120
04.08.2018, 09:58 35
здорово когда тебя понимают.. а про элевацию в начале через JS/VBS сценарии тоже смотрел, но там не разобрался и есть сложности с подстановкой своих bat-команд
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
08.08.2018, 17:30  [ТС] 36
Цитата Сообщение от Eskander88 Посмотреть сообщение
что написать в bat-файле по пути C:\file.bat (можно .vbs ), чтобы можно было выполнить произвольные bat-инструкции в режиме "от имени Администратора"?
Это можно сделать с помощью задания. Только у вас будут весьма большие ограничения:
- нельзя синхронизировать процессы
- нельзя наследовать переменные среды (хотя вы сможете передать аргумент для команды)
- нельзя получить код возврата

Если вам такое подходит:

Создаёте новую папку, работаете в ней:
- создаёте и запускаете с админ. полномочиями такой батник:
Windows Batch file
1
schtasks.exe /create /tn "AdminHost" /SC ONCE /ST 00:00 /F /RL HIGHEST /tr "\"%~dp0AdminHost.cmd\" $(Arg0)"
- создаёте батник AdminHost.cmd с таким содержанием:
Windows Batch file
1
2
3
@echo off
SetLocal EnableExtensions
%*
(можно добавить в конец pause)
- создаёте admin.vbs с таким содержимым:
Visual Basic
1
2
3
4
5
6
7
8
For i = 0 to WScript.Arguments.Count - 1
    strCom = strCom & " " & WScript.Arguments(i)
Next
set TaskScheduler = CreateObject("Schedule.Service")
TaskScheduler.Connect()
set ScheduledTaskFolder = TaskScheduler.GetFolder("\")
set ScheduledTask = ScheduledTaskFolder.GetTask("AdminHost")
call ScheduledTask.Run(strCom)
- создайте рабочий батник Work.cmd, например, с таким содержимым:
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
 
:: Run user-level command
whoami /priv
 
:: Rum admin-level command
cscript.exe admin.vbs whoami /priv
 
pause
и запустите его.
1
08.08.2018, 17:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2018, 17:30

Запуск скрипта в определенное время и проверка, запущена ли служба
Ребят, может у кого есть шаблон батника. Что конкретно нужно: 1. Запуск...

Запуск скрипта в доменной сети на рабочих станциях до логона
Доброго дня! Подскажите, уважаемые гуру, как запускать скрипт/батник при...

Запуск скрипта под системным пользователем на всех компьютерах домена
Нужно запустить скрипт: в гпо автозагрузку он добавлен, но многие свои...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Опции темы

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