99

Как разработчик, мне часто приходится открывать командную строку для различных целей. Например, я использую 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 открывать командные запросы администратора.

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

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

13 ответов13

86

Чтобы ответить на первую часть вашего вопроса, когда вы нажимаете клавишу 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 не требуется.)

37

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

Вкладка « Совместимость » полностью отключена для всех исполняемых файлов 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 доверенных программ, чтобы командную строку можно было запускать с правами администратора, не принимая приглашение. Это оставляет вам (а) несколько вариантов.

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

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

19

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

12

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

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

    • Если нет папки Layers, вам придется создать ее и назвать ее:
      Щелкните правой кнопкой мыши папку AppCompatFlags выберите « Создать» → « Ключ».
  2. Щелкните правой кнопкой мыши « Layers , выберите « Создать» → « Значение строки». Задайте в качестве имени нового строкового значения полный путь к командной строке (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"
4

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

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

4

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

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

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

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

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

Более улучшенная версия. Это также включает в себя фоновый каталог, который позволяет вам также открыть 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\""
1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .