Як я завжди можу запускати командний рядок як адміністратор?


103

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

Багато програм дозволяють вам постійно змінювати рівень привілеїв за замовчуванням у меню Властивості. Командний рядок не є однією з таких програм.

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

Як змусити вікно команд запускатись як адміністратор за замовчуванням (навіть коли використовується контекстне меню "Відкрити вікно команд тут")?


Чому б просто не змінити UAC на піднесення тільки?
surfasb

Я не бачу опції "лише підняти" на моїй повзунку UAC. Ви маєте на увазі щось, окрім вікна "Налаштування контролю облікових записів користувачів"?
Кевін

6
Я думаю, що його час
забивання

Відповіді:


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\""

Потім запустіть файл. Він об'єднає зміни в реєстрі та додасть параметр у ваші контекстні меню. (Клавіша зміни не потрібна.)


7
Примітка; вам доведеться прийняти підказку UAC в обох випадках.
Synetech

1
Правка реєстру не працює в Windows 8.
Biker John

Патч реєстру працює на сервері 2012 R2
Fiat

Для мене це не спрацювало в Windows 7
Hello Universe

1
Якщо ви не бачите команди після запуску файлу reg, вийдіть із Windows та увійдіть назад.
trebormf

38

Багато програм дозволяють вам постійно змінювати рівень привілеїв за замовчуванням у меню Властивості. Командний рядок не є однією з таких програм.

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

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

Щоб встановити права адміністратора для виконуваних файлів Windows, потрібно створити ярлик і скористатися вкладкою ЯрликAdvanced(пункт командного рядка в меню "Пуск" - це вже ярлик):

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

Вікно завжди відкривається в C: \ windows \ system32, а не в моєму каталозі користувачів (як у затвердженій техніці 1) або в папці, в якій я хочу знаходитись (як у затвердженій техніці 2). Тому мені часто доводиться міняти каталоги, щоб дістатися куди хочу.

Це нормально і має сенс, оскільки якщо ви відкриваєте командний рядок адміністратора, ви, ймовірно, робите деякі системні дії, для яких вам потрібні привілеї адміністратора, а не дії користувача, на які ви вже маєте дозволи.

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

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

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

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


Зауважте, що вам все одно доведеться приймати підказку UAC. На жаль, немає (в даний час?) Ніякого способу створити UAC "білий список" довірених програм, щоб командний рядок можна було запустити як адміністратор без необхідності приймати запит. Це залишає вам (а) кілька варіантів.

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

У першому випадку ви взагалі уникаєте UAC, тоді як у двох останніх вводите свої облікові дані лише один раз під час створення ярлика.


Виникла проблема з налаштуванням поточного каталогу через автозапуск. За допомогою цього набору значень cd /d "%userprofile%"авторизується не лише під час відкриття нового вікна консолі, але й кожного разу, коли викликається нова нитка виконання. Це може спричинити проблеми, наприклад, з for /fпетлями. Спробуйте це у підказці cmd: cd "\Program Files"тоді for /f "delims=" %I in ('cmd /c cd') do @echo %I. Ви побачите, що for /fцикл вважає, що його поточний робочий каталог - $ home, а не програмні файли. Безпечніше змінити cmdярлик і встановити ціль як "%comspec%" /k cd /d "%userprofile%".
rojo

Якщо ви хочете зберегти інформацію про версію Windows та інформацію про авторські права під час відкриття нового вікна консолі, встановіть ціль ярлика на%comspec% /c cd /d "%USERPROFILE%" & %comspec%
rojo

+1 для відповіді на редагування без реєстрації. Інша відповідь, можливо, була б чудова в 2012 році, але я не хочу спробувати її на Windows 10 сьогодні.
Алан

19

Я використовую рішення - відкрити командний рядок, відкривши меню "Пуск", набравши "cmd" і натиснувши Ctrl+ Shift+ Enter. Це призведе до запуску обраної програми як адміністратора.


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 завжди працював як адміністратор, просто додайте нижче рег-код до свого реєстру:

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> Відкрити вікно команди тут.
Troy Gizzi

1
Якщо це працює, це правильна відповідь, незважаючи на набагато більш довгу версію, яка прийнята в даний час.
Xodarap777

Це працює і для Windows 10. Покладіть вміст у блокнот, збережіть його з розширенням .reg та запустіть його
Chris Halcrow

4

Я використовував пару інструментів, які були іншими способами вирішення (крім того, що згадував Джессі).

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


Ось пряме посилання на завантаження.
ashleedawg

4

Найпростіший спосіб обійти все горе UAC і т. Д. - це встановити запис у графіку завдань для запуску cmd.exe, використовуючи найвищі привілеї. Не створюйте для нього подій тригера та переконайтесь, що на вкладці Налаштування встановлено прапорець Дозволити виконання завдань на вимогу. Також на вкладці "Налаштування" переконайтесь, що в списку "Якщо завдання вже запущено, тоді застосовується наступне правило" встановлено значення "Не запускати новий екземпляр".

Потім створіть ярлик до цього на робочому столі та запустіть його звідти, або за допомогою швидкої клавіші швидкого доступу або закріпіть ярлик на панелі завдань.

Я це зробив у своїй системі Windows 7, і вона працює чудово.


1
На жаль, я забув вказати одну важливу річ. Ось цільовий шлях для ярлика до Завдання. C: \ Windows \ System32 \ schtasks.exe / run / TN "командний рядок без UAC". Текст всередині лапок - це те, що ви називаєте Завдання під час створення завдання.
Пітер Уіллс


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\""

Ви побачите два однакових рядки в контекстному меню (shift); один непідвищений командний рядок та інший із "(адміністратором)", доданим у.

Це воно...


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


1

Все завдяки Джессі Брохінському

Більш вдосконалена версія. Сюди також входить фонова директорія, яка дозволяє відкрити cmd всередині папки. Також заради цього ви можете відкрити команду Promt як не адміністратор.

Також ви можете відключити 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

Наступні роботи для мене

@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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.