Как открыть командную строку с повышенными привилегиями, используя командные строки в обычном cmd?
Например, я использую, runas /username:admin cmd
но открытый cmd не кажется повышенным! Какие-нибудь решения?
Как открыть командную строку с повышенными привилегиями, используя командные строки в обычном cmd?
Например, я использую, runas /username:admin cmd
но открытый cmd не кажется повышенным! Какие-нибудь решения?
Ответы:
Я столкнулся с той же проблемой, и единственный способ открыть CMD от имени администратора из CMD заключался в следующем:
powershell -Command "Start-Process cmd -Verb RunAs"
и нажмитеEnterСогласно документации , модель безопасности Windows ...
не всегда предоставляет административные привилегии. Даже администраторы работают со стандартными привилегиями, когда они выполняют неадминистративные задачи, не требующие повышенных привилегий.
У вас есть параметр Создать эту задачу с правами администратора в диалоговом окне Создание новой задачи ( Диспетчер задач> Файл> Запустить новую задачу ), но нет встроенного способа эффективного повышения привилегий с помощью командной строки.
Однако есть некоторые сторонние инструменты (внутренне полагающиеся на Windows API), которые вы можете использовать для повышения привилегий из командной строки:
nircmdc elevate cmd
npm install -g windosu
(требуется установленный node.js )sudo cmd
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
наконец-то заработало. Другими runas /user:...
способами запрашивается пароль, несмотря на то, что вы уже являетесь администратором (убитый пакетный режим).
nircmdc elevate cmd
nircmd
, чтобы он работать как Linux sudo
, создать sudo.bat
файл на своем пути с таким содержимым: nircmd elevate %*
. Тогда вы можете сделать, например,sudo net stop W3SVC
windosu
:)
У меня недостаточно репутации, чтобы добавить комментарий к верхнему ответу, но с мощью псевдонимов вы можете уйти, просто набрав следующее:
powershell "start cmd -v runAs"
Это просто укороченная версия отличного решения user3018703:
powershell -Command "Start-Process cmd -Verb RunAs"
sudo.bat
(можно заменитьsudo
любым именем) со следующим содержимым
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
в папку в вашемPATH
; если вы не знаете, что это значит, просто переместите эти файлы вc:\windows\
sudo
будет работать в диалоговом окне «Выполнить» ( win+r) или в адресной строке проводника (это лучшая часть :))sudo.bat
(можно заменитьsudo
любым именем) со следующим содержимым
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
и sudo.bat
в папку в вашемPATH
; если вы не знаете, что это значит, просто переместите эти файлы вc:\windows\
sudo
будет работать в диалоговом окне «Выполнить» ( win+r) или в адресной строке проводника (это лучшая часть :))Я постоянно использую программы nirsoft (например, nircmdc) и sysinternals (например, psexec). Они очень полезны.
Но если вы не хотите или не можете использовать стороннюю программу, есть другой способ - чистая Windows.
Краткий ответ : при повышенных привилегиях вы можете создать запланированную задачу с повышенными привилегиями, которую затем можно будет вызывать позже, пока не повышены.
Ответ средней длины : при повышенном уровне создайте задачу с (но я предпочитаю графический интерфейс планировщика задач):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
Позже, когда высота не требуется, вызовите с помощью
schtasks /run /tn cmd_elev
Длинный ответ : много непонятных деталей; см. мою запись в блоге «Запуск программы БЕЗ UAC, полезно при запуске системы и в пакетных файлах (используйте планировщик задач)»
Мой любимый способ сделать это - использовать PsExec.exe от SysInternals, доступного по адресу http://technet.microsoft.com/en-us/sysinternals/bb897553.
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
Переключатель "-h" творит чудеса:
-h Если целевая система Vista или выше, запускает процесс с повышенным токеном учетной записи, если он доступен.
Заставьте пакетный файл сохранить учетные данные фактической учетной записи администратора с помощью /savecred
переключателя. Это запросит учетные данные в первый раз, а затем сохранит зашифрованный пароль в диспетчере учетных данных. Затем все последующие запуски пакета он будет запускаться от имени полного администратора, но не запрашивать учетные данные, поскольку они хранятся в зашифрованном виде в диспетчере учетных данных, и конечный пользователь не может получить пароль. Следующее должно открыть CMD с повышенными правами с полными правами администратора и запрашивать пароль только в первый раз:
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
В то время как решения , предоставляемых Dheeraj Bhaskar работы, к сожалению , они приведут к UAC диалога , показывая на вершине (г порядка мудр) , но не получать внимание (сфокусированное окно звонящего Cmd / PowerShell окна), таким образом , я либо необходимость возьмите мышь и нажмите «Да» или выберите окно UAC с помощью Alt + Shift + Tab. (Проверено на Win10x64 v1607 build14393.447; UAC = "[...] не затемнять [...]" .)
Следующее решение немного неудобно, поскольку оно использует два файла, но сохраняет правильный порядок фокуса, поэтому никаких дополнительных действий мыши / клавиатуры не требуется (кроме подтверждения диалога UAC: Alt + Y ).
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
Беги с su
.
Я уже давно пользуюсь Elevate
.
Это описание - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
Я копирую bin.x86-64\elevate.exe
из .zip
в C:\Program Files\elevate
и добавляю этот путь в свой PATH
.
Затем GitBash я могу запустить что-то вроде elevate sc stop W3SVC
отключения IIS
службы.
Выполнение команды дает мне UAC
диалог, правильно сфокусированный с помощью управления с клавиатуры, и после принятия диалога я возвращаюсь в свою оболочку.
..
@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF
:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1
сохраните этот сценарий как "god.cmd" в вашей system32 или в другом месте, куда вы укажете ....
если вы откроете cmd в e: \ mypictures \ и наберете god, он попросит вас ввести учетные данные и вернет вас в то же место, что и администратор ...
Подобно некоторым другим решениям выше, я создал elevate
пакетный файл, который запускает окно PowerShell с повышенными привилегиями, минуя политику выполнения, чтобы разрешить выполнение всего, от простых команд до пакетных файлов и сложных сценариев PowerShell. Я рекомендую поместить его в папку C: \ Windows \ System32 для удобства использования.
Исходная elevate
команда выполняет свою задачу, захватывает вывод, закрывает порожденное окно PowerShell, а затем возвращается, записывая захваченный вывод в исходное окно.
Я создал два варианта, elevatep
иelevatex
, которые соответственно приостанавливают и оставляют окно PowerShell открытым для дальнейшей работы.
https://github.com/jt-github/elevate
И на случай, если моя ссылка когда-нибудь исчезнет, вот код исходного командного файла повышения:
@Echo Off
REM Executes a command in an elevated PowerShell window and captures/displays output
REM Note that any file paths must be fully qualified!
REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue
if "%1"=="" (
REM If no command is passed, simply open an elevated PowerShell window.
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
REM Copy command+arguments (passed as a parameter) into a ps1 file
REM Start PowerShell with Elevated access (prompting UAC confirmation)
REM and run the ps1 file
REM then close elevated window when finished
REM Output captured results
IF EXIST %temp%\trans.txt del %temp%\trans.txt
Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
Type %temp%\trans.txt
)
Можно использовать временную переменную среды для использования с ярлыком с повышенными правами (
start.cmd
setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"
ascladm.lnk (ярлык)
_ properties\advanced\"run as administrator"=yes
(чтобы внести изменения в путь, вам необходимо временно создать env.Variable
)
_ properties\target="%valueName_betterSpecificForEachCase%\ascladm.cmd"
_ properties\"start in"="%valueName_betterSpecificForEachCase%"
ascladm.cmd
setx valueName_betterSpecificForEachCase=
reg delete HKEY_CURRENT_USER\Environment /F /V valueName_betterSpecificForEachCase
"%~dp0fileName_targetedCmd.cmd"
) (targetCmd запускается в окне cmd с повышенными правами)
Хотя это 3 файла, вы можете поместить все (включая targetCmd) в какую-нибудь подпапку (не забудьте добавить имя папки к патчам) и переименовать "start.cmd" в одно имя цели.
Для меня это похоже на самый родной способ сделать это, в то время как cmd не имеет необходимой команды
Я не уверен, что программа ExecElevated.exe (13 КБ) справится с этой задачей .... но может. Или, по крайней мере, быть полезным для других с похожими потребностями, которые пришли на эту страницу, как и я (но я не нашел решения, поэтому в итоге я создал инструмент сам в .Net).
Он выполнит приложение с повышенным токеном (в режиме администратора). Но вы получите диалоговое окно UAC для подтверждения! (возможно, нет, если UAC отключен, не тестировал).
И учетная запись, вызывающая инструмент, также должна иметь администратора. прав конечно.
Пример использования:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
В методе Дираджа Бхаскара с Powershell не хватает места, по крайней мере, для воплощения Powershell в Windows 10.
Командная строка внутри его sudo.bat должна быть
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
Обратите внимание на лишний пробел после% cd%
;) Frode
Вот способ интеграции с проводником. При щелчке правой кнопкой мыши в любой папке в проводнике Windows появится дополнительный пункт меню:
Вот шаги:
* Используйте pushd вместо cd, чтобы он работал на любом диске. :-)
Я сделал это легко, используя следующую команду в cmd
runas / netonly / пользователь: Администратор \ Администратор cmd
после ввода этой команды вы должны ввести свой пароль администратора (если вы не знаете свой пароль администратора, оставьте его пустым и нажмите Enter или введите что-нибудь, сработало для меня).
Есть несколько способов открыть cmd с повышенными правами, но только ваш метод работает из стандартной командной строки. Просто нужно поставить user
not username
:
runas /user:machinename\adminuser cmd
См. Соответствующую справку от сообщества Microsoft .
Я использовал, runas /user:domainuser@domain cmd
который успешно открыл приглашение с повышенными правами.