Показать полную графическую версию : [решено] как запустить из одного батника другой от имени администратора под семеркой
Как запустить из одного батника другой от имени администратора под семеркой с включенным UAC (Естествено, я понимаю, что все равно UAC выдаст предупреждение, но меня это устраивает). runas /user:Admin (admin, Администратор) не работает- пишет "вход не произведен" по причине "пользователь не существует" или "имеются ограничения".
И второе:
Как изнутри батника определить что его запустили от имени администратора в семерке? (переменная %USERNAME% все равно содержит имя исходного пользователя).
1. может, через ярлык (там вроде есть опция) ?.. типа: 'Start "" script.lnk'
2. ткнуться в запрещенный ресурс, пример: http://csi-windows.com/toolkit/csi-isadmin
amel27,
1. проверю, но что-то не нравится мне это
2. Тоже такая мысль была. Думал можно по-нормальному (то есть команда для этого есть). Попробовал указанный там код- всегда выдавал YES почему-то.
Добавлено:
2. Честно говоря, указанный код разбирать желания пока нет. Заметил, что при запуске от администратора переменная %CD% принимает вид C:\Windows\system32, поэтому попробовал так:
set RunAdmin=false
if "%CD%"=="%WinDir%\system32" set RunAdmin=true
Работает, при условии, что мы точно знаем, что запускаем батник не из %WinDir%\system32 и UAC включен. Однако если UAC отключен, то %CD% принимает значение директории из которой запущен батник даже если запустить от админа (причем при входе что от ограниченного пользователя, что от админа). Отсюда возникает вопрос: есть ли вообще разница при отключенном UAC в простом запуске программы и запуске от администратора?
2. Команды, к сожалению, нет (именно на полномочия, а не на проверку членства в группе). Попробуйте посмотреть здесь: CMD/BAT: наличие административных привилегий у текущего пользователя (http://forum.script-coding.info/viewtopic.php?id=3840). Там есть как и тот же принцип, так и другой способ. Проверять, годится ли хоть что-то оттуда для «Windows 7», предстоит Вам.
Если выйти за рамки тематики, то есть интересная библиотека «%systemroot%\system32\compatui.dll»: VBScript: некоторые интересные объекты — опрос мнения (http://forum.script-coding.info/viewtopic.php?id=3929) с функцией «.CheckAdminPrivileges()» (есть ли она в умолчальной поставке «Windows 7» — равно не знаю [но не откажусь от Ваших комментариев, если она есть]).
seriych, а, может быть, стоит задействовать для сего PowerShell из командного файла, а? Он ведь вроде как умеет исполнять код из своей командной строки? Я вот буквально сегодня смотрел пример подобного использования (http://forum.farmanager.com/viewtopic.php?p=63008#p63008) (если я всё правильно там понял; сам я, к сожалению, пока не работаю с PowerShell).
то есть интересная библиотека «%systemroot%\system32\compatui.dll»: vbscript: некоторые интересные объекты — опрос мнения с функцией «.CheckAdminPrivileges()» (есть ли она в умолчальной поставке «Windows 7» — равно не знаю [но не откажусь от Ваших комментариев, если она есть]). »
В базовой нет. Мне надо, чтобы оно работало даже на стартере. Хотелось бы только bat, чтобы могли редактировать люди, знающие только bat.
По поводу остального завтра посмотрю, а то сегодня устал дико.
В базовой нет. »
Спасибо, ясно.
После выходных со свежими мыслями все проверил
1. С ярлыком все работает. Создаем исполняемый батник, делаем на него ярлык и ставим в опциях ярлыка "Запускать от имени администратора". Работоспособность сохраняется при копировании обоих файлов в другую папку или на другой комп.
2. Метод с сайта работает (http://csi-windows.com/toolkit/csi-isadmin), надо только для русской версии заменить в коде "Not found" на "*Ґ **©¤Ґ*" или "не найден" (в дос-кодировке).
Мой метод с %CD% вроде работает также, если мы точто запускаем батник не из %WinDir%\system32.
Cancer_mvm
01-10-2010, 12:36
У меня такая проблема: у меня на переносном жестком диске батник который на ХП делал определенные операции:
@echo off
cd \
rd /s /q Updates
\Autorun\Total\Admin\HDD_soft\Update\wget.exe -N -P Updates -c -t 0 http://www.xxx/updates/kaspersky.rar
\Autorun\Total\Admin\HDD_soft\Update\wget.exe -N -P Updates -c -t 0 http://www.xxx/updates/nod32v3.rar
\Autorun\Total\Admin\HDD_soft\Update\wget.exe -N -P Updates -c -t 0 http://www.xxx/updates/nod32v2.rar
Как заставить его тоже делать на семерке.
1. Есил я его просто запускаю то мне выдается ошибка о не возможности удаления rd /s /q Updates .
2. Если я его запускаю от имени администратора то при выполнении команды cd \ я оказываюсь на диске С:\ , а не в корне портативного жёсткого (естественно он не находит ни папки Updates ни пути к проге wget.exe )
3. Приходится вручную удалять папку Updates (это самый простой способ который я нашел), и запускать без каких либо прав админа, тогда у меня скачиваются базы к антивирусам. Но это крайне неудобно, к тому же данный батник я запускаю с панели Total Commander.
1. С ярлыком все работает. Создаем исполняемый батник, делаем на него ярлык и ставим в опциях ярлыка "Запускать от имени администратора". Работоспособность сохраняется при копировании обоих файлов в другую папку или на другой комп. »
Это я тоже сделать не могу так как галочка в свойствах ярлыка батника не активна, следовательно не вижу никакого смысла запускать батник с ярлыка.
Если я его запускаю от имени администратора то при выполнении команды cd \ я оказываюсь на диске С:\ , а не в корне портативного жёсткого »попробуйте заменить "cd \" на "cd /d %~d0\"
Cancer_mvm
01-10-2010, 15:05
amel27, Спасибо огромное, работает!!! еще хотелось бы знать расшифровку этой строчки"cd /d %~d0\", очень интересно что чего делает, т.к. самостоятельно я такое не составил бы.
И еще вопрос как сделать что б этот батник с панели Total Commander запускался с админскими правами (предупреждение UAC меня устраивает).
очень интересно что чего делает »в справке подробно расписано: "HELP CALL", "HELP CD"
как сделать что б этот батник с панели Total Commander запускался с админскими правами »п.1 поста #2
Sirius83
01-11-2012, 18:11
Доброго времени! Вопрос как сделать так чтобы звук в динамике был слишен удаленному клиенту к которому я подключаюсь терминально, а не мне. Тоисть я подключаюсь терминально к клиенту запускаю некий простенький bat-файл которий содержит команду @echo • (для пищалки через системный динамик ПК) и все хорошо пищит но только мне, а ни клиенту, а хотелось бы наоборот.
asmalyshev
05-04-2013, 11:10
Коллеги я придумал другую проверку
rem # Проверка UAC
rem ===============
sc start W32Time| findstr /i "1056"
IF NOT %ERRORLEVEL%==0 (echo Access is denied! && pause && exit /b)
rem ===============
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.