Как я всегда могу запустить командную строку от имени администратора?

104

Как разработчик, мне часто приходится открывать командную строку для различных целей. Например, я использую, iisresetчтобы перезапустить мой локальный веб-сервер.

Обычно я открываю командное окно одним из двух способов:

  1. Нажмите Win, введите «cmd» и нажмитеEnter
  2. Находясь в проводнике, удерживайте Shiftи щелкните правой кнопкой мыши папку и выберите «Открыть командное окно здесь».

Однако, когда я открываю командное окно любым из этих способов, у меня нет полных привилегий администратора, на которые, как мне кажется, я имею право.

Я администратор, но cmd.exe этого не знает

Для запуска приложений только для администратора я должен открыть командную строку относительно трудоемким способом:

  1. Нажмите Win, наберите "cmd"
  2. Подождите, пока меню не заполнится
  3. Снимите руку с клавиатуры и положите ее на мышь
  4. Щелкните правой кнопкой мыши пункт меню «cmd.exe»
  5. Выберите «Запуск от имени администратора»

Это недопустимо по нескольким причинам:

  • Окно всегда открывается в C: \ windows \ system32, а не в моем Usersкаталоге (как в утвержденном методе 1) или в папке, в которой я хочу находиться (как в утвержденном методе 2). Поэтому мне часто приходится менять каталоги, чтобы попасть туда, куда я хочу.
  • Этот процесс на несколько миллисекунд медленнее, чем любой из моих предпочтительных методов. Выполняемая несколько раз в день, каждый день до конца моей карьеры, это в сумме составляет около десяти дней потерянного времени, потраченного на клики и ожидания, а также на изменение каталога.
  • Как программист, выполнение бессмысленного роботизированного задания вызывает у меня сильную эмоциональную боль.
  • Как программист, поднимать руку - тяжелая задача, которая причиняет мне сильную физическую боль.

Вот почему я ищу готовое решение, которое позволит одобренным методам 1 и 2 открывать командные запросы администратора.

Многие программы позволяют вам постоянно изменять уровень привилегий по умолчанию из меню «Свойства». Командная строка не является одной из этих программ.

введите описание изображения здесь

Как заставить командное окно запускаться от имени администратора по умолчанию (даже при использовании опции контекстного меню «Открыть командное окно здесь»)?

Kevin
источник
Почему бы просто не изменить UAC только на повышение?
Surfasb
Я не вижу опцию «Поднять только» на моем слайдере UAC. Вы имеете в виду что-то кроме окна настроек контроля учетных записей?
Кевин
6
Я думаю, что это время Хаммера ...
ThunderToes

Ответы:

88

Чтобы ответить на первую часть вашего вопроса, когда вы нажимаете клавишу Windows и вводите «CMD», вы можете нажать Ctrl+ Shift+, Enterчтобы открыть как администратор.

Чтобы ответить на вторую часть вашего вопроса, вставьте следующее в блокнот и сохраните его с расширением «.reg»:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

Затем запустите файл. Это объединит изменения в реестр и добавит опцию в ваши контекстные меню. (Клавиша Shift не требуется.)

Джесси
источник
7
Запись; вам все равно придется принять приглашение UAC в обоих случаях.
Synetech
1
Редактирование реестра не работает в Windows 8.
Байкер Джон
Исправление реестра работает для Server 2012 R2
Fiat
Это не сработало для меня в Windows 7
Hello Universe
1
Если вы не видите команду после запуска reg-файла, выйдите из Windows и войдите снова.
trebormf
38

Многие программы позволяют вам постоянно изменять уровень привилегий по умолчанию из меню «Свойства». Командная строка не является одной из этих программ.

Вкладка « Совместимость » полностью отключена для всех исполняемых файлов Windows:

введите описание изображения здесь

Чтобы установить права администратора для исполняемых файлов Windows, необходимо создать ярлык и использовать вкладку « Ярлык » → Advanced(пункт командной строки в меню «Пуск» уже является ярлыком):

введите описание изображения здесь

Окно всегда открывается в C: \ windows \ system32, а не в моем каталоге Users (как в утвержденном методе 1) или в папке, в которой я хочу быть (как в утвержденном методе 2). Поэтому мне часто приходится менять каталоги, чтобы попасть туда, куда я хочу.

Это нормально и имеет смысл, поскольку, если вы открываете командную строку администратора, вы, вероятно, выполняете некоторые системные действия, для которых вам нужны привилегии администратора, а не действия пользователя, для которых у вас уже есть разрешения.

Вы можете установить каталог по умолчанию на глобальном уровне, добавив / отредактировав Autorunзапись в реестре (она даже не должна быть расширяемой строкой для использования переменных среды):

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"="cd /d \"%userprofile%\""

Теперь, каждый раз, когда вы открываете командную строку любым способом , по умолчанию (ну, технически, change-directory ) автоматически указывается каталог вашего профиля пользователя.

Более того, вы можете добавить другие команды, которые будут запускаться автоматически при открытии командной строки с помощью &оператора (например, cd /d %userprofile% & cls & dir). Кроме того, вы можете установить одно и то же значение в том же ключе под HKLMветкой, чтобы установить его для всех пользователей.


Обратите внимание, что вам все равно придется принять приглашение UAC. К сожалению, (в настоящее время?) Нет способа создать «белый список» доверенных программ UAC, чтобы командную строку можно было запускать с правами администратора, не принимая ее. Это оставляет вам (а) несколько вариантов.

  • Вы можете выключить или отключить UAC ( useraccountcontrolsettings.exe)
  • Вы можете использовать программу повышения привилегий, например, Elevator aka Elevate Me или Elevation PowerToy.
  • Создайте запланированную задачу с повышенными правами , введите для нее учетные данные (один раз), а затем создайте ярлык для задачи.

В первом случае вы полностью избегаете UAC, а в двух последних вы вводите свои учетные данные только один раз при создании ярлыка.

Synetech
источник
Есть проблема с настройкой текущего каталога через автозапуск. При этом значении cd /d "%userprofile%"автозапуск запускается не только при открытии нового окна консоли, но и каждый раз, когда вызывается новый поток выполнения. Это может вызвать проблемы, например, с for /fпетлями. Попробуйте это в командной строке: cd "\Program Files"затем for /f "delims=" %I in ('cmd /c cd') do @echo %I. Вы увидите, что for /fцикл считает, что его текущим рабочим каталогом является $ home, а не Program Files. Безопаснее изменить cmdярлык и установить цель как "%comspec%" /k cd /d "%userprofile%".
Рохо
Если вы хотите сохранить версию Windows и информацию об авторских правах при открытии нового окна консоли, установите цель ярлыка%comspec% /c cd /d "%USERPROFILE%" & %comspec%
rojo
+1 за ответ, не связанный с редактированием реестра. Другой ответ мог бы быть хорошим в 2012 году, но я не хочу пробовать его сегодня на Windows 10.
Алан
19

Решение, которое я использую, - это открыть командную строку, открыв меню «Пуск», набрав «cmd» и нажав Ctrl+ Shift+ Enter. Это приведет к тому, что выбранная программа будет запущена от имени администратора.

Dracs
источник
1
Есть ли альтернатива, которая не требует «поиска»? (потому что из того, что я знаю, набирая вещи в поле на самом деле выполняет поиск)
Pacerier
Единственный способ, которым я знаю, - это ответ Люка, отключить UAC. Поиск cmd довольно быстрый, даже не удается нажать Ctrl + Shift + Enter, прежде чем он его найдет.
Dracs
Я делаю это все время на компьютерах клиентов. Это находит CMD довольно чертовски быстрым
канадец Люк
Это загрузит это как Администратор?
Барлоп
@barlop Да, эта горячая клавиша (Ctrl + Shift + Enter) запустит выделенную программу в меню «Пуск» от имени администратора.
Dracs
12

Для автоматического запуска CMDс правами администратора каждый раз, когда на него просто нажимают (без щелчка правой кнопкой мыши или создания дополнительных ярлыков), есть простое решение:

  1. В редакторе реестра перейдите к:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    • Если Layersпапки нет , вам нужно будет создать ее и дать ей имя:
      щелкните правой кнопкой мыши по AppCompatFlagsпапке и выберите NewKey
  2. Щелкните правой кнопкой мыши Layers, выберите NewString Value. Задайте в качестве имени вашего нового строкового значения полный путь к ( CMD.EXE) командной строке (т.е. C:\Windows\System32\cmd.exe)

  3. Дважды щелкните новое строковое значение, чтобы изменить его, и установите для «Значения данных» значение RUNASADMIN.

У меня было то же раздражение, и это сработало для меня.

синий
источник
11

Если вы хотите, чтобы CMD.exe всегда запускался от имени администратора, просто добавьте приведенный ниже код reg в свой реестр:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"
М Сасан М.Х.
источник
2
Это работало для меня на Windows 8.1. Теперь я просто нажал Windows-R, cmd, Enter. Это также работает для открытия окна команд из Проводника через Shift-RightClick> Открыть окно команд здесь.
Трой Джиззи
1
Если это работает, это правильный ответ, несмотря на гораздо более длинную версию, принятую в настоящее время.
Xodarap777
Это работает и для Windows 10. Поместите контент в блокнот, сохраните его с расширением .reg и запустите
Chris Halcrow
Не работал для меня Часть HKLM даже не зарегистрировалась, по некоторым причинам. Обсудите, работает ли это по-прежнему: superuser.com/questions/961573/… , с альтернативами.
Рэй Вудкок
4

Было несколько инструментов, которые я использовал, которые были другими обходными путями (в дополнение к тому, что упомянул Джесси).

Назад , когда Vista , первым вышел, Microsoft вышел с « поднять » Powertoy , что было весьма полезным и сделал работу и до сих пор, я считаю (не проверено) работает на Windows 7. Бросьте его в среду пути , и вы можете запустить «Поднять iisreset» из обычной командной строки (или даже «Поднять cmd» из запуска / запуска или создать ярлык)

Rex
источник
Вот прямая ссылка на скачивание.
ashleedawg
4

Самый простой способ обойти все горе UAC и т. Д. - настроить запись в расписании задач для запуска cmd.exe, используя самые высокие привилегии. Не создавайте для него событие Trigger и убедитесь, что на вкладке «Настройки» установлен флажок «Разрешить запуск задачи по требованию». Также на вкладке «Параметры» убедитесь, что в раскрывающемся списке «Если задача уже выполняется, то применимо следующее правило» установлено значение «Не запускать новый экземпляр».

Затем создайте ярлык для этого на рабочем столе и запустите его оттуда, либо с помощью сочетания клавиш или прикрепите ярлык к панели задач.

Я сделал это в моей системе Windows 7, и она отлично работает.

Питер Уиллс
источник
1
К сожалению, я забыл указать одну важную вещь. Вот целевой путь для ярлыка к Задаче. C: \ Windows \ System32 \ schtasks.exe / run / TN "Командная строка без UAC". Текст внутри кавычек - это то, что вы называете Задачей при создании Задачи.
Питер Уиллс
не указывайте свой электронный адрес в своих ответах
BlueBerry - Vignesh4303
2

Просто скопируйте и вставьте cmd.exe и переименуйте его в «cmda.exe» в папке \ system32 \ (337 КБ даже не страшно ...). Параметр «Запуск от имени администратора» в свойствах cmda.exe больше не будет недоступен, и вы можете настроить его на постоянную работу от имени администратора. Теперь у вас будет две командные подсказки: первая - обычная, вторая - с привилегией (a) dmin. Набрать «cmda» в Winстроке поиска так же легко, как и «cmd»!

Для контекстного меню cmd с правами администратора убедитесь, что у вас уже есть cmda.exe, добавьте его в новый файл .reg и запустите его

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda]
@="Open command window here (Administrator)"
"HasLUAShield"=""
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda\Command]
@="cmda.exe /s /k pushd \"%V\""

Вы увидите две одинаковые строки в контекстном меню (смещение); одна не повышенная командная строка и еще одна с добавлением «(Администратор)».

Это оно...

Икана
источник
1

Создайте ярлык для cmd.exe, щелкните правой кнопкой мыши и выберите свойства, на вкладке «Ярлык» выберите «Дополнительно», выберите «Запуск от имени администратора».

WinOutreach2
источник
1

Я думаю, что самый простой способ всегда запускать cmd от имени администратора - это создать файл .reg с кодом ниже:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
@="C:\\Windows\\System32\\cmd.exe"="RUNASADMIN"

Вставьте это в блокнот или что-то и сохраните как файл .reg. Примечание. При этом командная строка запускается от имени администратора для всех пользователей. Чтобы всегда работать от имени администратора только для вашего пользователя, просто измените HKEY_LOCAL_MACHINE на HKEY_CURRENT_USER

user281995
источник
1

Все благодаря Джесси Брохински

Более улучшенная версия. Это также включает в себя фоновый каталог, который позволяет вам также открыть opencmd из папки. Кроме того, ради этого вы можете открыть командную строку от имени администратора.

Также вы можете отключить AdminApprovalMode. Таким образом, вам не нужно работать от имени администратора, когда вы являетесь администратором. http://helpdeskgeek.com/windows-7/turn-off-admin-approval-mode-in-windows-7/

Windows Registry Editor Version 5.00
;write minus before to unreg example: [-HKEY_CLASSES_ROOT\Directory\shell\cmdhere]

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""
ColacX
источник
0

Единственный другой способ, кроме того, что упомянул Dracs, это полностью отключить UAC

Канадский Люк
источник
0

Следующее работает для меня

@echo off
:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

вы получите то же самое приглашение uac, подтверждающее администрацию runas .. нашло это некоторое время назад @ stackexchange

sudhi
источник