Як відкрити підвищений cmd за допомогою командного рядка для Windows?


109

Як відкрити підвищений командний рядок за допомогою командних рядків на звичайному cmd?

Наприклад, я використовую, runas /username:admin cmdале відкритий cmd не здається підвищеним! Будь-які рішення?


Я спробував усі відповіді. Найбільш корисною відповіддю без програмного забезпечення і щонайменше жодних дій є stackoverflow.com/a/40942828/9217577
TheGuardener

Відповіді:


165

Я зіткнувся з тією ж проблемою, і єдиний спосіб, коли я зміг відкрити CMD як адміністратор CMD, робив наступне:

  1. Відкрити CMD
  2. Напишіть powershell -Command "Start-Process cmd -Verb RunAs"і натиснітьEnter
  3. З'явиться спливаюче вікно з проханням відкрити CMD як адміністратор

2
Хороша відповідь. Я додав і відредагував я раніше, щоб запустити його в одному командному рядку!
Преет Сангха

1
Я створив пакетний файл із цим і зберег його як admincmd.bat у своїй папці Windows, тому все, що мені потрібно зробити, це ввести «admincmd» хіт Enter, і він відкриє адмін cmd. (Я також додав ще один рядок до пакетного файлу з " вихід ", щоб воно закривало вікно cmd без адміністрування)
Тоні Брікс

Чому б не розмістити cmd (та будь-які параметри) на кінці. Наявність команди непарне з точки зору читабельності.
Ерік Фоссум

38

Відповідно до документації , модель безпеки Windows ...

не надає адміністративні пільги завжди. Навіть адміністратори працюють за стандартними привілеями, коли вони виконують не адміністративні завдання, які не потребують підвищених привілеїв.

У діалоговому вікні Створити нове завдання ( Диспетчер завдань> Файл> Запустити нове завдання ) у вас є опція Створити це завдання з адміністративними привілеями , але немає вбудованого способу ефективного залучення привілеїв за допомогою командного рядка.

Однак є деякі інструменти сторонніх виробників (внутрішньо покладаючись на API API), які можна використовувати для підняття привілеїв з командного рядка:

NirCmd :

  1. Завантажте та розпакуйте.
  2. nircmdc elevate cmd

Віндосу :

  1. Встановіть його: npm install -g windosu(потрібно встановити node.js )
  2. sudo cmd

3
Дякую, nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1нарешті спрацювали. Інші runas /user:...способи запрошення пароля, незважаючи на те, що він уже був адміністратором (вбитий пакетний режим)
Маркос

Дякую заnircmdc elevate cmd
час

4
Після intalling nircmd, щоб він працювати як Linux sudo, створити sudo.batфайл на своєму шляху з таким вмістом: nircmd elevate %*. Тоді ви можете зробити, наприклад,sudo net stop W3SVC
Кіп

1
я думаю, що Віндосу - це найпростіший та найелегантніший спосіб зробити це, особливо якщо ти - розвідник ... дякую людині. Я відчуваю, що перебуваю на нікс-системі: D
Еммануель Махуні

любив windosu:)
Фінлай Роелофс

32

У мене недостатньо репутації, щоб додати коментар до головної відповіді, але, маючи псевдоніми, ви можете піти, просто ввівши наступне:

powershell "start cmd -v runAs"

Це лише коротша версія відмінного рішення для користувача3018703:

powershell -Command "Start-Process cmd -Verb RunAs"

26

Простий спосіб я зробив, спробувавши тут інші відповіді

Спосіб 1: БЕЗ сторонньої програми (я використав це)

  1. Створіть файл з назвою sudo.bat(його можна замінити sudoбудь-яким ім'ям) на наступний вміст powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
  2. Перейти sudo.batдо папки у вашому PATH; якщо ви не знаєте, що це означає, просто перемістіть ці файли доc:\windows\
  3. Тепер sudoбуде працювати в діалоговому вікні Run ( win+r) або в адресному рядку Explorer (це найкраща частина :))

Спосіб 2: З програмою третьої сторони

  1. Завантажте NirCmd і розпакуйте її.
  2. Створіть файл з назвою sudo.bat(його можна замінити sudoбудь-яким ім'ям) на наступний вміст nircmdc elevate cmd /k "cd /d %cd%"
  3. Переміщення nircmdc.exeта sudo.batпапку у вашому PATH; якщо ви не знаєте, що це означає, просто перемістіть ці файли доc:\windows\
  4. Тепер sudoбуде працювати в діалоговому вікні Run ( win+r) або в адресному рядку Explorer (це найкраща частина :))

У той час як рішення роботи, на жаль , вони приведуть до UAC діалогу , показуючи на вершині (г порядку мудрий) , але НЕ отримувати увагу . (Тестовано на Win10x64 v1607 build14393.447.)
Ogmios

@Ogmios, що досить дивно. чи правильно працює діалогове вікно, коли не ініціюється так? Я дуже радісно використовую це без таких питань. Може, через якусь іншу конфігурацію ви змінили?
Dheeraj Bhaskar

Так, діалог UAC працює так, як очікувалося в усіх інших ситуаціях (з якими я стикався). Це єдиний виняток. І звичайно я змінив свою систему іншими способами, але не знайшов нічого, що могло б приховати вплив на це діалогове вікно.
Огміос

@ Ogmios вибачте, товариш, я не можу придумати нічого іншого, що ви можете зробити, щоб виправити це. Вам, мабуть, варто спробувати інші рішення, щоб побачити, чи краще вони для вас. Ура
Дехерай Бхаскар

Хоча повноваження не є третьою стороною, це не фондова програма, і ви начебто пишете програму третьої сторони для досягнення поставленої мети.
unrline

13

Я весь час використовую програми nirsoft (наприклад, nircmdc) та sysinternals (наприклад, psexec). Вони дуже корисні.

Але якщо ви не хочете або не можете dl сторонньої програми, ось ще один спосіб, чиста Windows.

Коротка відповідь : ви можете під час підвищеного створити заплановане завдання з підвищеними привілеями, які потім можна буде викликати пізніше, але не підвищені.

Відповідь середньої довжини : при підвищенні створюйте завдання за допомогою (але я віддаю перевагу графічному графічному інтерфейсу завдань):

schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00

Потім пізніше, не потрібно висоти, посилайтеся на

schtasks /run /tn cmd_elev

Довга відповідь : є багато непоказних деталей; дивіться мій запис у блозі "Запуск програми БЕЗ UAC, корисна при запуску системи та в пакетних файлах (використовуйте планувальник завдань)"


8

Далі нижче, як пакетний файл, відкриється командний рядок підвищеного рівня із встановленим шляхом до того самого каталогу, що і той, звідки викликався пакетний файл

set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "

5

Мій улюблений спосіб зробити це - використання PsExec.exe від SysInternals, доступний за посиланням http://technet.microsoft.com/en-us/sysinternals/bb897553

.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe

Перемикач "-h" - це той, хто робить магію:

-h Якщо цільова система Vista чи вище, чи має процес запускатися з підвищеним маркером облікового запису, якщо він є.


1
Щоб змусити це працювати, потрібно відредагувати властивості psexec.exe і на вкладці сумісності встановити прапорець "Запустити як адміністратор". Інакше ви отримаєте помилку: PSEXESVC не встановлений. Але psexec викликає проблеми з клавішею вкладки в cmd.exe. Не вдається використати вкладку для завершення імен папок.
Пітер Квірінг

Не впевнений, у якому середовищі ви спробували, але мені не потрібно було змінювати налаштування "Запустити як адміністратор" (ви намагаєтеся запустити cmd.exe на віддаленій машині від вашого?). Також немає проблем із клавішею вкладки, я можу успішно завершити імена файлів і папок (принаймні тестуватись на Win8.1 та Win10, працює з командних рядків cmd та PowerShell)
David Rodriguez

Я використовую Win10 і запускаю його локально. Не впевнений, чому це трапляється зі мною, а не тобою. Мені дісталося nircmd на роботу, і це не викликає проблеми з вкладками.
Пітер Квірінг

Я також зауважую, що не можна автоматично заповнити клавішу табуляції, але принаймні це відкриє підвищений cmd-підказку в контексті іншого користувача, чого, здавалося б, попередні способи не досягали, коли я намагався. Прапор '-h' чудовий (windows 10), працює ласощі.
користувач1840734

4

Зробіть пакетний файл збереженням облікових даних фактичного облікового запису адміністратора за допомогою /savecredперемикача. Це вперше запропонує ввести облікові дані, а потім збереже зашифрований пароль у менеджері облікових даних. Тоді для всіх наступних разів запуску пакета вона працюватиме як повний адміністратор, але не вимагає отримання облікових даних, оскільки вони зберігаються зашифрованими у менеджері облікових даних, і кінцевий користувач не може отримати пароль. Далі слід відкрити підвищений CMD з повними привілеями адміністратора і буде введено лише перший раз для введення пароля:

START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe

3

У той час як рішення , що надаються Dheeraj Bhaskar роботи, на жаль , вони приведуть до UAC діалогу , показуючи на вершині (г порядку мудрий) , але НЕ отримувати увагу (сфокусоване вікно дзвонить Cmd / PowerShell вікна), таким чином , я або необхідність візьміть мишку та натисніть «так» або виберіть вікно UAC за допомогою Alt + Shift + Tab. (Тестовано на Win10x64 v1607 build14393.447; UAC = "[...] не затьмарюйте [...]" .)

Наступне рішення трохи незручне, оскільки воно використовує два файли, але воно зберігає правильний порядок фокусування, тому додаткові дії миші / клавіатури не потрібні (крім підтвердження діалогового вікна UAC: Alt + Y ).

  1. cmdadm.lnk (властивості швидкого доступу / Додаткові ... / Запустити як адміністратор = УВІМКНЕНО) %SystemRoot%\System32\cmd.exe /k "cd /d"
  2. су.бат @start cmdadm.lnk %cd%

Бігайте з su.


Я, на жаль, не можу це відтворити. Щоразу, коли я використовую будь-який із своїх рішень. Моє
Dheeraj Bhaskar

3

Я використовую 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діалог, правильно зосереджений з керуванням клавіатурою і після прийняття діалогу я повертаюся до своєї оболонки.


3

..

@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" у вашій системі32 або як би ваш шлях спрямовував на ....

якщо ви відкриєте cmd в e: \ mypictures \ та введіть god, він попросить вас отримати облікові дані та поверне вас до того самого місця, що й адміністратор ...


1
powerhell це здорово, але йому потрібні модулі ... їм oldscool ... просто потрібна система ...
jOte-

Чи працює цей метод / трюк також для довгих шляхів / назви файлів? Або я повинен використовувати "% ~ snx0" або "% ~ dpsnx0" замість цього?
script'n'code

2

Подібно до деяких інших рішень вище, я створив elevate пакетний файл, який виконує підвищене вікно PowerShell, минаючи політику виконання, щоб дозволити запускати все, від простих команд до пакетних файлів до складних сценаріїв PowerShell. Я рекомендую вставити його у папку C: \ Windows \ System32 для зручності використання.

Оригінальна elevateкоманда виконує своє завдання, фіксує вихід, закриває породжене вікно PowerShell і потім повертається, виписуючи захоплений вихід у вихідне вікно.

Я створив два варіанти, elevatepі elevatex, відповідно, паузу та тримати відкрите вікно PowerShell для більшої роботи.

https://github.com/jt-github/elevate

І якщо моє посилання коли-небудь вмирає, ось код для оригінального файлу пакетів 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
)

0

Можна використовувати тимчасову змінну середовища для використання із підвищеним ярликом (

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) у деякій підпапці (не забудьте додати папкуName до патчів) та перейменувати "start.cmd" на одне ім'я цільового

Для мене це виглядає як найрідніший спосіб зробити це, тоді як cmd не має необхідної команди


я прочитав усі вищезазначені рішення і зрозумів їх. я не розумію ваших кроків. Я вибираю рішення з найкращими плюсами і мінусами.
Дмитро Лагода

0

Я не впевнений, що інструмент ExecElevated.exe (13KB) зробить роботу .... але це може. Або, принаймні, бути корисним для інших з подібними потребами, які зайшли на цю сторінку, як і я (але я не знайшов рішення, тому в кінцевому підсумку створив сам інструмент у .Net).

Він виконає додаток з підвищеним маркером (в режимі адміністратора). Але ви отримаєте діалог UAC для підтвердження! (можливо, ні, якщо UAC був відключений, не перевіряли його).

І обліковий запис, що викликає інструмент, також повинен мати адміністратора. права звичайно.

Приклад використання:

ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"

2
Мені просто подобаються відповіді з "Це, можливо, ще не перевірено", і, звичайно, одна з "не впевнений" ....
Гіріджар Карник,

1
посилання розірвано.
Дмитро Лагода

Посилання відновлено, вибачте за це
MrCalvin

0

Метод Дхераджа Бхаскара з Пауершеллом у ньому відсутній простір, але принаймні для втілення Пауершелла Windows 10.

Командний рядок всередині його sudo.bat повинен бути

powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"

Зверніть увагу на додатковий простір після% cd%

;) Frode


0

Ось спосіб інтегруватися з Explorer. Він з'явиться додатковий пункт меню, коли ви клацнете правою кнопкою миші в будь-якій папці Windows Explorer:

Інтеграція Windows Explorer

Ось такі кроки:

  1. Створіть цей ключ: \ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin
  2. Змініть його значення за замовчуванням на те, що ви хочете відображати як текст пункту меню. Колишній "оболонка DOS як адміністратор"
  3. Створіть цей інший ключ: \ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin \ команда
  4. Змініть це значення за замовчуванням на це, ipsis litteris: powershell.exe -Command "Start-Process -Verb RunAs 'cmd.exe' -Args '/ k pushd"% 1 "'"
  5. Зроблено. Тепер клацніть правою кнопкою миші в будь-якій папці, і ви побачите там свій предмет у межах інших елементів.

* Використовуйте pushd замість CD, щоб він міг працювати на будь-якому диску. :-)


-1

Ви можете використовувати наступний синтаксис, у мене було те саме питання, і я не вважав, що сценарій не потрібен.

runas / профіль / користувач: домен \ ім'я користувача cmd

Це працювало для мене, це може бути інакше у вашій мережі.


-1

Просто використовуйте команду: runas / noprofile / user: administrator cmd


-2

Я зробив це легко, використовуючи наступну команду в cmd

runas / netonly / user: адміністратор \ адміністратор cmd

після введення цієї команди ви повинні ввести пароль свого адміністратора (якщо ви не знаєте свого пароля адміністратора, залиште його порожнім і натисніть Enter або введіть щось, працював для мене).


не допомогли мені
Дмитро Лагода

@DzmitryLahoda Ви можете мені проінформувати про помилку, яку ви отримали?
Harish Regada

-2

Натисніть клавішу Windows + X, і тепер з правами адміністратора ви можете вибрати пункт Powershell або командний рядок. Працює, якщо ви адміністратор. Функція може бути непридатною, якщо система не ваша.


-5

Існує кілька способів відкрити підвищений cmd, але тільки ваш метод працює із стандартної командної лінії. Вам просто потрібно поставити userНЕ username:

runas /user:machinename\adminuser cmd

Перегляньте відповідну допомогу спільноти Microsoft .


4
Це не те саме, що запускати підвищену команду, тому що коли я відкриваю вікно з підвищеним cmd і набираю "whoami", це приносить такий же результат, як і невисоке вікно. Коли я запускаю "whoami / all" в обох випадках, я бачу різниці в дозволах для того самого користувача.
Константіно Кронембергер

-5

Я використав, runas /user:domainuser@domain cmdякий відкрив підвищений підказку успішно.


Для цього потрібні облікові дані іншого користувача. Якщо ви вже адміністратор і хочете працювати з підвищеними привілеями, як, наприклад, коли ви клацніть правою кнопкою миші на програму і вибираєте запустити як адміністратор, і пароль не вимагається, просто діалогове вікно підтвердження, тоді вам потрібно ще щось. Я прийшов сюди шукати цю відповідь, але, схоже, не тут.
Пол-Себастьян Маноле
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.