Как открыть повышенный 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), которые вы можете использовать для повышения привилегий из командной строки:

NirCmd:

  • Загрузите его и разархивируйте.
  • nircmdc elevate cmd

windosu:

  • Установите его: 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, который успешно открыл приветствие.