Я попробовал все ответы. Самый полезный ответ без какого-либо программного обеспечения и по крайней мере без действий - stackoverflow.com/a/40942828/9217577
TheGuardener
Ответы:
166
Я столкнулся с той же проблемой, и единственный способ открыть CMD от имени администратора из CMD заключался в следующем:
Хороший ответ. Я добавил и отредактировал, как раньше, чтобы он запускался в одной командной строке!
Preet Sangha,
1
Я создал пакетный файл с этим и сохранил его как admincmd.bat в своей папке Windows, поэтому все, что мне нужно сделать, это ввести «admincmd», нажать Enter, и он откроет команду администратора. (Я также добавил еще одну строку в пакетный файл с помощью " exit ", чтобы закрыть окно cmd без администратора)
Тони Брикс
Почему бы не поместить cmd (и любые параметры) в конец. Наличие команды странно с точки зрения удобочитаемости.
Эрик Фоссум,
38
Согласно документации , модель безопасности Windows ...
не всегда предоставляет административные привилегии. Даже администраторы работают со стандартными привилегиями, когда они выполняют неадминистративные задачи, не требующие повышенных привилегий.
У вас есть параметр Создать эту задачу с правами администратора в диалоговом окне Создание новой задачи ( Диспетчер задач> Файл> Запустить новую задачу ), но нет встроенного способа эффективного повышения привилегий с помощью командной строки.
Однако есть некоторые сторонние инструменты (внутренне полагающиеся на Windows API), которые вы можете использовать для повышения привилегий из командной строки:
Спасибо, nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1наконец-то заработало. Другими runas /user:...способами запрашивается пароль, несмотря на то, что вы уже являетесь администратором (убитый пакетный режим).
Маркос
Спасибо заnircmdc elevate cmd
tim
4
После intalling nircmd, чтобы он работать как Linux sudo, создать sudo.batфайл на своем пути с таким содержимым: nircmd elevate %*. Тогда вы можете сделать, например,sudo net stop W3SVC
Кип
1
Я думаю, что Windosu - это, безусловно, самый простой и элегантный способ сделать это, особенно если вы разработчик ... спасибо, чувак. Я чувствую, что нахожусь в системе nix: D
Эммануэль Махуни
любил windosu:)
Finlay Roelofs
32
У меня недостаточно репутации, чтобы добавить комментарий к верхнему ответу, но с мощью псевдонимов вы можете уйти, просто набрав следующее:
powershell "start cmd -v runAs"
Это просто укороченная версия отличного решения user3018703:
Простой способ, который я сделал, попробовав другие ответы здесь
Метод 1: БЕЗ сторонней программы (я использовал это)
Создайте файл с именем sudo.bat(можно заменитьsudo любым именем) со следующим содержимым
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
Переместите sudo.batв папку в вашемPATH ; если вы не знаете, что это значит, просто переместите эти файлы вc:\windows\
Теперь sudoбудет работать в диалоговом окне «Выполнить» ( win+r) или в адресной строке проводника (это лучшая часть :))
В то время как решения работы, к сожалению , они приведут к UAC диалога , показывая на вершине (г порядка мудр) , но не получать внимание . (Проверено на Win10x64 v1607 build 14393.447.)
Ogmios
@Ogmios, это довольно странно. диалог работает правильно, если не инициирован таким образом? Я с удовольствием использовал это без таких проблем. Может это из-за какой-то другой конфигурации, которую вы изменили?
Дирадж Бхаскар,
Да, диалог UAC работает должным образом во всех других ситуациях (с которыми я сталкивался). Это единственное исключение. И, конечно, я изменил свою систему другими способами, но я не нашел ничего, что могло бы иметь скрытый эффект в этом диалоге.
Ogmios
@Ogmios, извини, дружище, я не могу придумать, что еще ты можешь сделать, чтобы это исправить. Возможно, вам стоит попробовать другие решения, чтобы узнать, подходят ли они вам. Cheers
Дирадж Бхаскар
Хотя PowerShell не является сторонней компанией, это не стандартная программа, и вы как бы пишете стороннюю программу для достижения цели.
undrline
13
Я постоянно использую программы nirsoft (например, nircmdc) и sysinternals (например, psexec). Они очень полезны.
Но если вы не хотите или не можете использовать стороннюю программу, есть другой способ - чистая Windows.
Краткий ответ : при повышенных привилегиях вы можете создать запланированную задачу с повышенными привилегиями, которую затем можно будет вызывать позже, пока не повышены.
Ответ средней длины : при повышенном уровне создайте задачу с (но я предпочитаю графический интерфейс планировщика задач):
Следующее, как пакетный файл, откроет командную строку с повышенными привилегиями с путем, установленным в тот же каталог, что и тот, из которого был вызван пакетный файл.
set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
Чтобы это работало, вы должны отредактировать свойства psexec.exe и на вкладке совместимости установить флажок «Запуск от имени администратора». В противном случае вы получите сообщение об ошибке: PSEXESVC не установлен. Но psexec вызывает проблемы с клавишей табуляции в cmd.exe. Невозможно использовать вкладку для завершения имен папок.
Питер Куиринг,
Не уверен, в какой среде вы пробовали, но мне не нужно было изменять настройку «Запуск от имени администратора» (вы пытаетесь запустить cmd.exe на удаленном компьютере с вашего?). Также нет проблем с клавишей табуляции, я могу успешно заполнить имена файлов и папок (по крайней мере, протестировано на Win8.1 и Win10, работает как из командной строки cmd, так и из PowerShell)
Дэвид Родригес,
Я использую Win10 и запускаю его локально. Не знаю, почему это происходит со мной, а не с тобой. Я заставил nircmd работать, и это не вызывает проблем с вкладками.
Питер Куиринг,
Я также заметил, что нельзя выполнить автозаполнение с помощью клавиши табуляции, но, по крайней мере, это откроет приглашение cmd с повышенными правами в контексте другого пользователя, чего предыдущие методы выше, похоже, не достигли, когда я попытался. Флаг '-h' отличный (Windows 10), работает неплохо.
user1840734
4
Заставьте пакетный файл сохранить учетные данные фактической учетной записи администратора с помощью /savecredпереключателя. Это запросит учетные данные в первый раз, а затем сохранит зашифрованный пароль в диспетчере учетных данных. Затем все последующие запуски пакета он будет запускаться от имени полного администратора, но не запрашивать учетные данные, поскольку они хранятся в зашифрованном виде в диспетчере учетных данных, и конечный пользователь не может получить пароль. Следующее должно открыть CMD с повышенными правами с полными правами администратора и запрашивать пароль только в первый раз:
В то время как решения , предоставляемых Dheeraj Bhaskar работы, к сожалению , они приведут к UAC диалога , показывая на вершине (г порядка мудр) , но не получать внимание (сфокусированное окно звонящего Cmd / PowerShell окна), таким образом , я либо необходимость возьмите мышь и нажмите «Да» или выберите окно UAC с помощью Alt + Shift + Tab. (Проверено на Win10x64 v1607 build14393.447; UAC = "[...] не затемнять [...]" .)
Следующее решение немного неудобно, поскольку оно использует два файла, но сохраняет правильный порядок фокуса, поэтому никаких дополнительных действий мыши / клавиатуры не требуется (кроме подтверждения диалога UAC: Alt + Y ).
cmdadm.lnk (свойства ярлыка / Дополнительно ... / Запуск от имени администратора = ВКЛ)
%SystemRoot%\System32\cmd.exe /k "cd /d"
Это описание - 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, он попросит вас ввести учетные данные и вернет вас в то же место, что и администратор ...
Powershell - это круто, но для этого нужны модули ... im oldscool ... просто нужна система ...
jOte
Работает ли этот метод / трюк для длинных путей / имен файлов? Или я должен использовать вместо этого «% ~ snx0» или «% ~ dpsnx0»?
script'n'code 01
2
Подобно некоторым другим решениям выше, я создал elevate пакетный файл, который запускает окно PowerShell с повышенными привилегиями, минуя политику выполнения, чтобы разрешить выполнение всего, от простых команд до пакетных файлов и сложных сценариев PowerShell. Я рекомендую поместить его в папку C: \ Windows \ System32 для удобства использования.
Исходная elevateкоманда выполняет свою задачу, захватывает вывод, закрывает порожденное окно PowerShell, а затем возвращается, записывая захваченный вывод в исходное окно.
Я создал два варианта, elevatepиelevatex , которые соответственно приостанавливают и оставляют окно PowerShell открытым для дальнейшей работы.
И на случай, если моя ссылка когда-нибудь исчезнет, вот код исходного командного файла повышения:
@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
)
) (targetCmd запускается в окне cmd с повышенными правами)
Хотя это 3 файла, вы можете поместить все (включая targetCmd) в какую-нибудь подпапку (не забудьте добавить имя папки к патчам) и переименовать "start.cmd" в одно имя цели.
Для меня это похоже на самый родной способ сделать это, в то время как cmd не имеет необходимой команды
Я прочитал все вышеперечисленные решения и понял их. Я не понимаю твоих шагов. я выбираю решение с лучшими плюсами и минусами.
Дмитрий Лагода
0
Я не уверен, что программа ExecElevated.exe (13 КБ) справится с этой задачей .... но может. Или, по крайней мере, быть полезным для других с похожими потребностями, которые пришли на эту страницу, как и я (но я не нашел решения, поэтому в итоге я создал инструмент сам в .Net).
Он выполнит приложение с повышенным токеном (в режиме администратора). Но вы получите диалоговое окно UAC для подтверждения! (возможно, нет, если UAC отключен, не тестировал).
И учетная запись, вызывающая инструмент, также должна иметь администратора. прав конечно.
после ввода этой команды вы должны ввести свой пароль администратора (если вы не знаете свой пароль администратора, оставьте его пустым и нажмите Enter или введите что-нибудь, сработало для меня).
@DzmitryLahoda, можешь проинформировать меня об ошибке?
Хариш Регада
-2
Нажмите клавишу Windows + X, и теперь вы можете выбрать Powershell или командную строку с правами администратора. Работает, если вы админ. Функция может оказаться непригодной для использования, если система не ваша.
Есть несколько способов открыть cmd с повышенными правами, но только ваш метод работает из стандартной командной строки. Просто нужно поставить usernot username:
Это не то же самое, что запускать команду с повышенными правами, потому что, когда я открываю окно cmd с повышенными правами и набираю «whoami», он дает тот же результат, что и окно без повышенных прав. Когда я запускаю whoami / all в обоих случаях, я вижу разницу в разрешениях для одного и того же пользователя.
Константино Кронембергер
-5
Я использовал, runas /user:domainuser@domain cmdкоторый успешно открыл приглашение с повышенными правами.
Для этого требуются учетные данные другого пользователя. Если вы уже являетесь администратором и хотите запускать с повышенными привилегиями, например, когда вы щелкаете правой кнопкой мыши приложение и выбираете запуск от имени администратора, а пароль не запрашивается, только диалоговое окно подтверждения, вам нужно что-то еще. Я пришел сюда в поисках ответа, но, похоже, его здесь нет.
Ответы:
Я столкнулся с той же проблемой, и единственный способ открыть CMD от имени администратора из CMD заключался в следующем:
powershell -Command "Start-Process cmd -Verb RunAs"
и нажмитеEnterисточник
Согласно документации , модель безопасности Windows ...
У вас есть параметр Создать эту задачу с правами администратора в диалоговом окне Создание новой задачи ( Диспетчер задач> Файл> Запустить новую задачу ), но нет встроенного способа эффективного повышения привилегий с помощью командной строки.
Однако есть некоторые сторонние инструменты (внутренне полагающиеся на Windows API), которые вы можете использовать для повышения привилегий из командной строки:
NirCmd :
nircmdc elevate cmd
windosu :
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
, чтобы он работать как Linuxsudo
, создатьsudo.bat
файл на своем пути с таким содержимым:nircmd elevate %*
. Тогда вы можете сделать, например,sudo net stop W3SVC
windosu
:)У меня недостаточно репутации, чтобы добавить комментарий к верхнему ответу, но с мощью псевдонимов вы можете уйти, просто набрав следующее:
Это просто укороченная версия отличного решения user3018703:
источник
Простой способ, который я сделал, попробовав другие ответы здесь
Метод 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: с помощью сторонней программы
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.
Краткий ответ : при повышенных привилегиях вы можете создать запланированную задачу с повышенными привилегиями, которую затем можно будет вызывать позже, пока не повышены.
Ответ средней длины : при повышенном уровне создайте задачу с (но я предпочитаю графический интерфейс планировщика задач):
Позже, когда высота не требуется, вызовите с помощью
Длинный ответ : много непонятных деталей; см. мою запись в блоге «Запуск программы БЕЗ UAC, полезно при запуске системы и в пакетных файлах (используйте планировщик задач)»
источник
Следующее, как пакетный файл, откроет командную строку с повышенными привилегиями с путем, установленным в тот же каталог, что и тот, из которого был вызван пакетный файл.
источник
Мой любимый способ сделать это - использовать PsExec.exe от SysInternals, доступного по адресу http://technet.microsoft.com/en-us/sysinternals/bb897553.
Переключатель "-h" творит чудеса:
-h Если целевая система Vista или выше, запускает процесс с повышенным токеном учетной записи, если он доступен.
источник
Заставьте пакетный файл сохранить учетные данные фактической учетной записи администратора с помощью
/savecred
переключателя. Это запросит учетные данные в первый раз, а затем сохранит зашифрованный пароль в диспетчере учетных данных. Затем все последующие запуски пакета он будет запускаться от имени полного администратора, но не запрашивать учетные данные, поскольку они хранятся в зашифрованном виде в диспетчере учетных данных, и конечный пользователь не может получить пароль. Следующее должно открыть CMD с повышенными правами с полными правами администратора и запрашивать пароль только в первый раз:источник
В то время как решения , предоставляемых 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
диалог, правильно сфокусированный с помощью управления с клавиатуры, и после принятия диалога я возвращаюсь в свою оболочку.источник
..
сохраните этот сценарий как "god.cmd" в вашей system32 или в другом месте, куда вы укажете ....
если вы откроете cmd в e: \ mypictures \ и наберете god, он попросит вас ввести учетные данные и вернет вас в то же место, что и администратор ...
источник
Подобно некоторым другим решениям выше, я создал
elevate
пакетный файл, который запускает окно PowerShell с повышенными привилегиями, минуя политику выполнения, чтобы разрешить выполнение всего, от простых команд до пакетных файлов и сложных сценариев PowerShell. Я рекомендую поместить его в папку C: \ Windows \ System32 для удобства использования.Исходная
elevate
команда выполняет свою задачу, захватывает вывод, закрывает порожденное окно PowerShell, а затем возвращается, записывая захваченный вывод в исходное окно.Я создал два варианта,
elevatep
иelevatex
, которые соответственно приостанавливают и оставляют окно PowerShell открытым для дальнейшей работы.https://github.com/jt-github/elevate
И на случай, если моя ссылка когда-нибудь исчезнет, вот код исходного командного файла повышения:
источник
Можно использовать временную переменную среды для использования с ярлыком с повышенными правами (
start.cmd
ascladm.lnk (ярлык)
(чтобы внести изменения в путь, вам необходимо временно создать
env.Variable
)ascladm.cmd
) (targetCmd запускается в окне cmd с повышенными правами)
Хотя это 3 файла, вы можете поместить все (включая targetCmd) в какую-нибудь подпапку (не забудьте добавить имя папки к патчам) и переименовать "start.cmd" в одно имя цели.
Для меня это похоже на самый родной способ сделать это, в то время как cmd не имеет необходимой команды
источник
Я не уверен, что программа ExecElevated.exe (13 КБ) справится с этой задачей .... но может. Или, по крайней мере, быть полезным для других с похожими потребностями, которые пришли на эту страницу, как и я (но я не нашел решения, поэтому в итоге я создал инструмент сам в .Net).
Он выполнит приложение с повышенным токеном (в режиме администратора). Но вы получите диалоговое окно UAC для подтверждения! (возможно, нет, если UAC отключен, не тестировал).
И учетная запись, вызывающая инструмент, также должна иметь администратора. прав конечно.
Пример использования:
источник
В методе Дираджа Бхаскара с Powershell не хватает места, по крайней мере, для воплощения Powershell в Windows 10.
Командная строка внутри его sudo.bat должна быть
Обратите внимание на лишний пробел после% cd%
;) Frode
источник
Вот способ интеграции с проводником. При щелчке правой кнопкой мыши в любой папке в проводнике Windows появится дополнительный пункт меню:
Вот шаги:
* Используйте pushd вместо cd, чтобы он работал на любом диске. :-)
источник
Вы можете использовать следующий синтаксис, у меня был тот же вопрос, и я не думаю, что нужен сценарий.
У меня это сработало, в вашей сети может быть иначе.
источник
Просто используйте команду: runas / noprofile / user: administrator cmd
источник
Я сделал это легко, используя следующую команду в cmd
runas / netonly / пользователь: Администратор \ Администратор cmd
после ввода этой команды вы должны ввести свой пароль администратора (если вы не знаете свой пароль администратора, оставьте его пустым и нажмите Enter или введите что-нибудь, сработало для меня).
источник
Нажмите клавишу Windows + X, и теперь вы можете выбрать Powershell или командную строку с правами администратора. Работает, если вы админ. Функция может оказаться непригодной для использования, если система не ваша.
источник
Есть несколько способов открыть cmd с повышенными правами, но только ваш метод работает из стандартной командной строки. Просто нужно поставить
user
notusername
:См. Соответствующую справку от сообщества Microsoft .
источник
Я использовал,
runas /user:domainuser@domain cmd
который успешно открыл приглашение с повышенными правами.источник