Як відкрити підвищений командний рядок за допомогою командних рядків на звичайному cmd?
Наприклад, я використовую, runas /username:admin cmd
але відкритий cmd не здається підвищеним! Будь-які рішення?
Як відкрити підвищений командний рядок за допомогою командних рядків на звичайному cmd?
Наприклад, я використовую, runas /username:admin cmd
але відкритий cmd не здається підвищеним! Будь-які рішення?
Відповіді:
Я зіткнувся з тією ж проблемою, і єдиний спосіб, коли я зміг відкрити CMD як адміністратор CMD, робив наступне:
powershell -Command "Start-Process cmd -Verb RunAs"
і натиснітьEnterВідповідно до документації , модель безпеки Windows ...
не надає адміністративні пільги завжди. Навіть адміністратори працюють за стандартними привілеями, коли вони виконують не адміністративні завдання, які не потребують підвищених привілеїв.
У діалоговому вікні Створити нове завдання ( Диспетчер завдань> Файл> Запустити нове завдання ) у вас є опція Створити це завдання з адміністративними привілеями , але немає вбудованого способу ефективного залучення привілеїв за допомогою командного рядка.
Однак є деякі інструменти сторонніх виробників (внутрішньо покладаючись на API 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"
Це лише коротша версія відмінного рішення для користувача3018703:
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
буде працювати в діалоговому вікні Run ( win+r) або в адресному рядку Explorer (це найкраща частина :))sudo.bat
(його можна замінити sudo
будь-яким ім'ям) на наступний вміст
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
та sudo.bat
папку у вашому PATH
; якщо ви не знаєте, що це означає, просто перемістіть ці файли доc:\windows\
sudo
буде працювати в діалоговому вікні Run ( win+r) або в адресному рядку Explorer (це найкраща частина :))Я весь час використовую програми 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, корисна при запуску системи та в пакетних файлах (використовуйте планувальник завдань)"
Мій улюблений спосіб зробити це - використання 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" у вашій системі32 або як би ваш шлях спрямовував на ....
якщо ви відкриєте cmd в e: \ mypictures \ та введіть god, він попросить вас отримати облікові дані та поверне вас до того самого місця, що й адміністратор ...
Подібно до деяких інших рішень вище, я створив 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
)
Можна використовувати тимчасову змінну середовища для використання із підвищеним ярликом (
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 не має необхідної команди
Я не впевнений, що інструмент ExecElevated.exe (13KB) зробить роботу .... але це може. Або, принаймні, бути корисним для інших з подібними потребами, які зайшли на цю сторінку, як і я (але я не знайшов рішення, тому в кінцевому підсумку створив сам інструмент у .Net).
Він виконає додаток з підвищеним маркером (в режимі адміністратора). Але ви отримаєте діалог UAC для підтвердження! (можливо, ні, якщо UAC був відключений, не перевіряли його).
І обліковий запис, що викликає інструмент, також повинен мати адміністратора. права звичайно.
Приклад використання:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
Метод Дхераджа Бхаскара з Пауершеллом у ньому відсутній простір, але принаймні для втілення Пауершелла Windows 10.
Командний рядок всередині його sudo.bat повинен бути
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
Зверніть увагу на додатковий простір після% cd%
;) Frode
Ось спосіб інтегруватися з Explorer. Він з'явиться додатковий пункт меню, коли ви клацнете правою кнопкою миші в будь-якій папці Windows Explorer:
Ось такі кроки:
* Використовуйте pushd замість CD, щоб він міг працювати на будь-якому диску. :-)
Я зробив це легко, використовуючи наступну команду в cmd
runas / netonly / user: адміністратор \ адміністратор cmd
після введення цієї команди ви повинні ввести пароль свого адміністратора (якщо ви не знаєте свого пароля адміністратора, залиште його порожнім і натисніть Enter або введіть щось, працював для мене).
Існує кілька способів відкрити підвищений cmd, але тільки ваш метод працює із стандартної командної лінії. Вам просто потрібно поставити user
НЕ username
:
runas /user:machinename\adminuser cmd
Перегляньте відповідну допомогу спільноти Microsoft .
Я використав, runas /user:domainuser@domain cmd
який відкрив підвищений підказку успішно.