Epicrush
@Epicrush

Как заставить bat запускаться от имени админа?

Была поставлена задача, нужно что-бы при запуске батника менялись сетевые настройки, я сделал вот так, оно работает только если запускать от имени админа.
netsh interface ip set address name="Ethernet" source=static 172.16.11.16 255.255.254.0 gateway=172.16.10.1 1 
netsh interface ip set dns name="Ethernet" static 172.16.10.1

но его нужно запускать из под обычного пользователя, для этого создал еще один батник

runas /user:Admin /savecred "D:\change ip.bat"

получается что при исполнении второго батника, запускается первый от имени админа, но изменения в сетевые настройки он не вносит с комментарием
Для запрошенной операции требуется повышение прав (запустите с правами администратора).


так-же читал что эту проблему можно решить открытием учетки встроенного(скрытого) администратора, но это решение не годиться, так как выглядит совершенно не безопасно тем-более с доменными учетными записями.
  • Вопрос задан
  • 32661 просмотр
Решения вопроса 1
@res2001
Developer, ex-admin
С помощью runas привилегии повышаются действительно только для встроенного администратора.
Ничего страшного в том, что бы его активизировать я не вижу. Хотите подстраховаться - смените ему имя. Конечно нужно назначит нормальный пароль.
Но сохранять с помощью runas /savecred пароль администратора - это выстрел себе в ногу. С помощью этого сохраненного пароля и runas можно будет любую программу запускать с повышенными привилегиями из-под любого пользователя. Этим вы сделаете большую дыру в безопасности сети.

На самом деле не очень понятна цель этого мероприятия - вы меняете IP адрес. Зачем? Чувствую, что, то что вы хотите добиться, должно быть сделано по другому. Варианты:
1. Сделайте 2 IP на одном интерфейсе и пусть они всегда будут.
2. Организовать доступ в 172.16.11 подсеть через промежуточный шлюз, на котором в зависимости от некоторых условий можно разрешать доступ или нет.
3. Можно запускать netsh удаленно с админскими привилегиями, запускать, конечно должен админ, а не пользователь. Если у вас есть АД, то доменный админ может это делать, если АД нет, то на пользовательском компе нужно выставить ключ в реестре:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
Этот ключ позволяет при сетевом доступе с админскими правами автоматически повышать привилегии. Локальных пользователей и их привилегии это не затрагивает.

Более конкретно можно будет сказать, если вы опишите цель смены IP.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@echo off
if  "%~1" == "self" (
     netsh interface ip set address name="Ethernet" source=static 172.16.11.16 255.255.254.0 gateway=172.16.10.1 1 
     netsh interface ip set dns name="Ethernet" static 172.16.10.1
) else (
    powershell.exe Start-Process "D:\changeip.bat self" -Verb runAs 
)

Есессно, без powershell не работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы