2012-07-25 13:57:17 +0000 2012-07-25 13:57:17 +0000
106
106
Advertisement

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

Advertisement

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

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

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

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

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

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

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

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

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

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

Как заставить окно команд запускаться от имени администратора по умолчанию (даже при использовании опции контекстного меню “Open command window here”)?.

Advertisement

Réponses (13)

88
88
88
2012-07-25 14:12:02 +0000

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

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

38
38
38
2012-07-25 14:56:43 +0000

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

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

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

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

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

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

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

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

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

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

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

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

20
Advertisement
20
20
2011-11-13 07:15:41 +0000

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

12
12
12
2013-03-10 22:08:33 +0000

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

  1. В Registry Editor , перейдите к..:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

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

  3. Дважды щелкните новое строковое значение, чтобы изменить его, и установите значение “Value data” в RUNASADMIN.

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

11
Advertisement
11
11
2014-01-04 17:10:28 +0000

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

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
4
4
2012-07-25 14:31:14 +0000

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

Когда только вышла Vista, компания Microsoft вышла с игрушкой elevate “ powerToy, которая была довольно полезной и сделала свою работу, и все же, я считаю (не тестировала), что она работает под Windows 7. Бросьте его в окружение путей и вы можете запустить "elevate iisreset” из обычной командной строки (или даже “elevate cmd” от старта/запуска, или создать ярлык).

4
Advertisement
4
4
2013-09-25 01:03:59 +0000

Самый простой способ обойти все горести UAC и т.д. - это настроить запись Task Schedule на запуск cmd.exe с наивысшими привилегиями. Не создавайте для нее событие триггера и убедитесь, что флажок Разрешить выполнение задачи по требованию отмечен в закладке Параметры. Также во вкладке “Параметры” убедитесь, что выпадающая строка “Если задача уже выполняется, то применяется следующее правило” имеет значение Do Not Start A New Instance (Не запускать новую инстанцию).

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

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

2
2
2
2013-09-23 10:28:31 +0000

Просто скопируйте и вставьте cmd.exe и переименуйте его в “cmda.exe” в папке \system32\ (337 KB - это даже не важно…). Опция “запустить от имени администратора” в свойствах cmda.exe больше не будет серой, и вы можете настроить ее на постоянный запуск от имени администратора. Теперь у вас будет два подсказки к командам: первый - обычный, второй - с привилегиями (a)dmin. В строке поиска Win набирать “cmda” так же просто, как и “cmd”!

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

Вы увидите две одинаковые строки в контекстном меню (сдвиг); одна невысокая командная строка и другая с “(Administrator)”.

Вот так…

1
Advertisement
1
1
2013-12-15 03:45:32 +0000

Я думаю, что самый простой способ всегда запускать 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.

1
1
1
2012-07-25 16:59:21 +0000

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

1
Advertisement
1
1
2015-01-15 09:26:51 +0000

Все благодаря Джесси Брохинскому 0x2 и 0x2 и более улучшенной версии. Сюда также входит фоновый каталог, позволяющий открывать cmd изнутри папки. Также для этого вы можете открыть commandpromt как не администратор.

Также вы можете отключить режим 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\""
```.
0
0
0
2014-09-23 08:41:15 +0000

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

@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

0
Advertisement
0
0
2011-11-13 08:30:56 +0000

Единственный другой способ, кроме того, о чем говорили Драки - полностью отключить UAC.

Questions connexes

3
28
8
13
13
Advertisement