Как открыть повышенный cmd с помощью командной строки для Windows?
Как открыть командную строку с повышенными правами с помощью командной строки на обычном cmd?
Например, я использую runas /username:admin cmd
, но cmd, который был открыт, кажется, не повышен! Любые решения?
Ответы
Ответ 1
Я столкнулся с той же проблемой, и единственным способом, с помощью которого я смог открыть CMD в качестве администратора из CMD, было следующее:
- Открыть CMD
- Напишите
powershell -Command "Start-Process cmd -Verb RunAs"
и нажмите Enter
- Появится всплывающее окно с просьбой открыть CMD как администратор
Ответ 2
Согласно документации, модель безопасности Windows...
не предоставляет административные привилегии вообще раз. Даже администраторы работают под стандартными привилегиями, когда они выполнять неадминистративные задачи, которые не требуют повышенных привилегии.
В диалоговом окне "Создать новую задачу" ( "Диспетчер задач" > "Файл" > "Запустить новую задачу" ) задана функция "Создать эту задачу с правами администратора", но нет встроенного способа эффективного повышения привилегий с помощью командной строки.
Однако есть некоторые сторонние инструменты (внутренне полагающиеся на Windows API), которые вы можете использовать для повышения привилегий из командной строки:
- Загрузите его и разархивируйте.
-
nircmdc elevate cmd
- Установите его:
npm install -g windosu
(требуется node.js)
-
sudo cmd
Ответ 3
Простой способ, который я сделал после того, как попробовал другие ответы здесь
Способ 1: БЕЗ сторонней программы (я использовал это)
- Создайте файл с именем
sudo.bat
(вы можете заменить sudo
на любое имя, которое вы хотите) со следующим контентом
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
- Переместите
sudo.bat
в папку в PATH
; если вы не знаете, что это значит, просто переместите эти файлы на c:\windows\
- Теперь
sudo
будет работать в диалоговом окне "Запуск" (win+r) или в адресной строке проводника (это лучшая часть:))
Способ 2: с сторонней программой
- Загрузите NirCmd и разархивируйте его.
- Создайте файл с именем
sudo.bat
(вы можете заменить sudo
на любое имя, которое вы хотите) со следующим контентом
nircmdc elevate cmd /k "cd /d %cd%"
- Переместите
nircmdc.exe
и sudo.bat
в папку в PATH
; если вы не знаете, что это значит, просто переместите эти файлы на c:\windows\
- Теперь
sudo
будет работать в диалоговом окне "Запуск" (win+r) или в адресной строке проводника (это лучшая часть:))
Ответ 4
У меня недостаточно репутации, чтобы добавить комментарий к верхнему ответу, но с помощью псевдонимов вы можете просто набрать следующее:
powershell "start cmd -v runAs"
Это просто сокращенная версия user3018703 отличное решение:
powershell -Command "Start-Process cmd -Verb RunAs"
Ответ 5
Я постоянно использую программы 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, полезную при запуске системы и в пакетных файлах (использовать планировщик задач)"
Ответ 6
Далее, как командный файл, откроется повышенная командная строка с путём, установленным в тот же каталог, что и тот, из которого вызывается командный файл
set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
Ответ 7
Я использовал 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
, правильно сфокусированный с помощью клавиатуры, и после принятия диалога я возвращаюсь в свою оболочку.
Ответ 8
Заставьте пакетный файл сохранить учетные данные фактической учетной записи администратора с помощью параметра /savecred
. Это запросит учетные данные в первый раз, а затем сохранит зашифрованный пароль в диспетчере учетных данных. Затем в течение всех последующих периодов пакетного запуска он будет работать как полный администратор, но не запрашивать учетные данные, поскольку они хранятся в зашифрованном виде в диспетчере учетных данных, и конечный пользователь не может получить пароль. Далее следует открыть CMD с повышенными правами с полными привилегиями администратора и запрашивать пароль только в первый раз:
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
Ответ 9
Мой любимый способ сделать это - использовать PsExec.exe из SysInternals, доступный по адресу http://technet.microsoft.com/en-us/sysinternals/bb897553
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
Переключателем "-h" является тот, кто делает магию:
-h Если целевая система - Vista или выше, процесс выполняется с помощью увеличенного токена учетной записи, если он доступен.
Ответ 10
Хотя оба решения, предлагаемые Dheeraj Bhaskar, работают, к сожалению, они приведут к тому, что диалог UAC отображается вверху (z-порядок), но не получает focus (сфокусированное окно - это окно calld cmd/powershell), поэтому мне нужно либо захватить мышь, либо щелкнуть "да", либо выбрать окно UAC с помощью Alt + Shift + Tab. (Проверено на Win10x64 v1607 build14393.447; UAC = "[...] не тускнеет [...]".)
Следующее решение немного неудобно, поскольку оно использует два файла, но сохраняет правильный порядок фокусировки, поэтому никаких дополнительных действий с мышью и клавиатурой не требуется (помимо подтверждения диалога UAC: Alt + Y).
- cmdadm.lnk(свойства ярлыка/Дополнительно.../Запуск от имени администратора = ВКЛ)
%SystemRoot%\System32\cmd.exe /k "cd /d"
- su.bat
@start cmdadm.lnk %cd%
Запустите с помощью su
.
Ответ 11
Как и некоторые другие вышеприведенные решения, я создал пакетный файл elevate
, который запускает повышенное окно PowerShell, минуя политику выполнения, позволяющую запускать все от простых команд до пакетных файлов для сложных сценариев PowerShell. Я рекомендую вставить его в папку C:\Windows\System32 для удобства использования.
Оригинальная команда elevate
выполняет свою задачу, захватывает вывод, закрывает порожденное окно PowerShell, а затем возвращается, записывая захваченный вывод в исходное окно.
Я создал два варианта: elevatep
и elevatex
, которые соответственно приостанавливают и оставляют окно PowerShell открытым для большей работы.
https://github.com/jt-github/elevate
И в случае, если моя ссылка когда-либо умирает, вот код оригинального командного файла upate:
@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
)
Ответ 12
..
@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
сохраните этот script как "god.cmd" в вашей системе32 или как бы то ни было, к которому направляется ваш путь....
если u открыть cmd в e:\mypictures\и набрать бога
он попросит вас предоставить учетные данные и вернет вас в то же место, что и администратор...
Ответ 13
Я не уверен, что инструмент ExecElevated.exe (13 КБ) выполнит эту работу.... но это возможно. Или, по крайней мере, быть полезным для других с похожими потребностями, которые пришли на эту страницу, как и я (но я не нашел решения, поэтому я сам создал инструмент в .Net).
Он выполнит приложение с повышенным токеном (в режиме администратора). Но вы получите диалог UAC для подтверждения! (возможно, нет, если UAC был отключен, не проверял его).
И учетная запись, вызывающая инструмент, также должна иметь администратора. прав конечно.
Пример использования:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
Ответ 14
Можно использовать временную переменную среды для использования с повышенным ярлыком (
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 выполняется в окне с повышенными привилегиями)
Хотя это 3 файла, вы можете поместить все (включая targetCmd) в какую-то подпапку (не забудьте добавить имя_папки в патчи) и переименовать "start.cmd" в одно целевое имя
Для меня это выглядит как наиболее родной способ сделать это, в то время как cmd не имеет необходимой команды
Ответ 15
Нажмите клавишу Windows + X, и теперь вы можете выбрать Powershell или командную строку с правами администратора. Работает, если вы являетесь администратором. Эта функция может быть недоступна, если система не ваша.
Ответ 16
В методе Dheeraj Bhaskar с Powershell отсутствует пробел, хотя бы для Windows 10 воплощение Powershell.
Командная строка внутри его sudo.bat должна быть
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
Обратите внимание на дополнительный пробел после% cd%
;) Фрод
Ответ 17
Я сделал это легко, используя следующую команду в cmd
runas/netonly/user: администратор\администратор cmd
после ввода этой команды вы должны ввести свой пароль администратора (если вы не знаете свой пароль администратора, оставьте его пустым и нажмите Enter или введите что-нибудь, у меня получилось)..
Ответ 18
Существует несколько способов открыть повышенный cmd, но только ваш метод работает из стандартной командной строки. Вам просто нужно положить user
not username
:
runas /user:machinename\adminuser cmd
См. соответствующую справку сообщество Microsoft.
Ответ 19
Я использовал runas /user:[email protected] cmd
, который успешно открыл приветствие.