Jak zawsze mogę uruchomić wiersz polecenia jako administrator?

103

Jako programista często muszę otwierać wiersz polecenia do różnych celów. Na przykład używam iisresetdo ponownego uruchomienia lokalnego serwera WWW.

Zazwyczaj otwieram okno poleceń na jeden z dwóch sposobów:

  1. Naciśnij Win, wpisz „cmd” i naciśnijEnter
  2. W Eksploratorze przytrzymaj Shiftfolder i kliknij prawym przyciskiem myszy folder i wybierz „Otwórz okno poleceń tutaj”

Kiedy jednak otwieram okno poleceń na jeden z tych sposobów, nie mam pełnych uprawnień administratora, do których mam prawo.

Jestem administratorem, ale cmd.exe tego nie wie

Aby uruchomić aplikacje tylko dla administratora, muszę otworzyć wiersz polecenia w ten stosunkowo pracochłonny sposób:

  1. Naciśnij Win, wpisz „cmd”
  2. Poczekaj, aż menu się zapełni
  3. Podnieś rękę z klawiatury i umieść ją na myszy
  4. Kliknij prawym przyciskiem myszy pozycję menu „cmd.exe”
  5. Wybierz „Uruchom jako administrator”

Jest to niedopuszczalne z kilku powodów:

  • Okno zawsze otwiera się w C: \ windows \ system32, a nie w moim Userskatalogu (jak w zatwierdzonej technice 1) lub w folderze, w którym chcę być (jak w zatwierdzonej technice 2). Dlatego często muszę zmieniać katalogi, aby dostać się tam, gdzie chcę iść.
  • Ten proces jest kilka milisekund wolniejszy niż jedna z moich preferowanych metod. Wykonywany kilka razy dziennie, przez resztę mojej kariery, stanowi około dziesięciu dni straconego czasu spędzonego na klikaniu i czekaniu oraz zmianie katalogu.
  • Jako programista wykonywanie bezsensownego robota wywołuje u mnie ogromny ból emocjonalny.
  • Jako programista podnoszenie ręki jest męczącym zadaniem, które powoduje wielki ból fizyczny.

Dlatego szukam jednego rozwiązania, które pozwoli zatwierdzonym technikom 1 i 2 otwierać monity poleceń administratora.

Wiele programów pozwala trwale zmienić domyślny poziom uprawnień z menu Właściwości. Wiersz polecenia nie jest jednym z tych programów.

wprowadź opis zdjęcia tutaj

Jak sprawić, aby okno poleceń było domyślnie uruchamiane jako administrator (nawet przy użyciu opcji menu kontekstowego „Otwórz okno poleceń tutaj”)?

Kevin
źródło
Dlaczego nie zmienić UAC tylko na podniesienie?
surfasb
Nie widzę opcji „tylko podwyższenie” na moim suwaku UAC. Czy masz na myśli coś innego niż okno Ustawienia kontroli konta użytkownika?
Kevin
6
Myślę, że nadszedł czas Hammer ...
ThunderToes

Odpowiedzi:

88

Aby odpowiedzieć na pierwszą część pytania, po naciśnięciu klawisza Windows i wpisaniu „CMD” możesz nacisnąć Ctrl+ Shift+, Enteraby otworzyć jako administrator.

Aby odpowiedzieć na drugą część pytania, wklej następujące elementy do notatnika i zapisz je z rozszerzeniem „.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\""

Następnie uruchom plik. Scali zmiany w rejestrze i doda opcję do menu kontekstowych. (Nie wymaga klawisza Shift.)

Jesse
źródło
7
Uwaga; nadal będziesz musiał zaakceptować monit UAC w obu przypadkach.
Synetech,
1
Edycja rejestru nie działa w systemie Windows 8.
Biker John
Poprawka rejestru działa dla Server 2012 R2
fiat
Nie działało to dla mnie w systemie Windows 7
Hello Universe
1
Jeśli po uruchomieniu pliku reg nie widzisz polecenia, wyloguj się z systemu Windows i zaloguj ponownie.
trebormf
38

Wiele programów pozwala trwale zmienić domyślny poziom uprawnień z menu Właściwości. Wiersz polecenia nie jest jednym z tych programów.

Karta Zgodność jest całkowicie wyłączona dla wszystkich plików wykonywalnych systemu Windows:

wprowadź opis zdjęcia tutaj

Aby ustawić uprawnienia administratora dla plików wykonywalnych systemu Windows, musisz utworzyć skrót i użyć karty SkrótAdvanced(wiersz polecenia w menu Start jest już skrótem):

wprowadź opis zdjęcia tutaj

Okno zawsze otwiera się w C: \ windows \ system32, a nie w moim katalogu Użytkownicy (jak w zatwierdzonej technice 1) lub w folderze, w którym chcę być (jak w zatwierdzonej technice 2). Dlatego często muszę zmieniać katalogi, aby dostać się tam, gdzie chcę iść.

Jest to normalne i ma sens, ponieważ otwierając wiersz polecenia administratora, prawdopodobnie wykonujesz pewne działania systemowe, do których potrzebujesz uprawnień administratora zamiast działań użytkownika, do których i tak masz już uprawnienia.

Możesz ustawić domyślny katalog globalnie, dodając / edytując Autorunwpis rejestru (nie musi to być nawet rozwijany ciąg znaków, aby używać zmiennych środowiskowych):

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

Teraz, za każdym razem, gdy otworzysz wiersz polecenia za pomocą dowolnej metody , automatycznie domyślnie (cóż, technicznie zmień katalog ) na katalog profilu użytkownika.

Co więcej, możesz dodać inne polecenia, które będą automatycznie uruchamiane za każdym razem, gdy otwierasz wiersz polecenia za pomocą &operatora (np cd /d %userprofile% & cls & dir.). Ponadto można ustawić tę samą wartość w tym samym kluczu w HKLMgałęzi, aby ustawić ją dla wszystkich użytkowników.


Pamiętaj, że nadal będziesz musiał zaakceptować monit UAC. Niestety nie ma (obecnie?) Sposobu na utworzenie „białej listy” zaufanych programów UAC, aby wiersz polecenia mógł być uruchamiany jako administrator bez konieczności przyjmowania monitu. To pozostawia Ci (a) kilka opcji.

  • Możesz całkowicie wyłączyć lub wyłączyć UAC ( useraccountcontrolsettings.exe)
  • Możesz użyć programu podnoszenia uprawnień, takiego jak Winda aka Elevate Me lub Elevation PowerToy
  • Utwórz zaplanowane zadanie z podwyższonym poziomem uprawnień, wprowadź dla niego poświadczenia (raz), a następnie utwórz skrót do zadania

W pierwszym przypadku całkowicie unikasz UAC, podczas gdy w dwóch ostatnich podajesz swoje poświadczenia tylko raz podczas tworzenia skrótu.

Synetech
źródło
Wystąpił problem z ustawieniem bieżącego katalogu przez autorun. Po ustawieniu tej wartości cd /d "%userprofile%"autoruns nie tylko podczas otwierania nowego okna konsoli, ale także za każdym razem, gdy wywoływany jest nowy wątek wykonania. Może to powodować problemy, na przykład z for /fpętlami. Spróbuj tego po poleceniu cmd: cd "\Program Files"a następnie for /f "delims=" %I in ('cmd /c cd') do @echo %I. Zobaczysz, że for /fpętla myśli, że jej bieżącym katalogiem roboczym jest $ home, a nie Program Files. Bezpieczniej jest zmodyfikować cmdskrót i ustawić cel jako "%comspec%" /k cd /d "%userprofile%".
rojo
Jeśli chcesz zachować wersję systemu Windows i informacje o prawach autorskich podczas otwierania nowego okna konsoli, ustaw cel skrótu na%comspec% /c cd /d "%USERPROFILE%" & %comspec%
rojo
+1 za odpowiedź edycyjną niezwiązaną z rejestrem. Inna odpowiedź może być dobra w 2012 roku, ale nie chcę dzisiaj wypróbowywać w systemie Windows 10.
Alan
19

Rozwiązaniem, którego używam, jest otwarcie wiersza polecenia, otwierając menu Start, wpisując „cmd” i naciskając Ctrl+ Shift+ Enter. Spowoduje to uruchomienie wybranego programu jako administratora.

Dracs
źródło
1
Czy istnieje alternatywa, która nie wymaga „wyszukiwania”? (ponieważ z tego, co wiem, wpisywanie rzeczy w polu faktycznie powoduje wyszukiwanie)
Pacerier,
Tylko w inny sposób znam odpowiedź Luke'a, wyłącz UAC. Wyszukiwanie cmd jest dość szybkie, nie można nawet nacisnąć Ctrl + Shift + Enter, zanim je znajdzie.
Dracs
Robię to cały czas na komputerach klientów. Uważa, że ​​CMD jest cholernie szybki
Kanadyjczyk Łukasz
Czy spowoduje to załadowanie go jako administratora?
barlop
@barlop Tak, ten klawisz skrótu (Ctrl + Shift + Enter) uruchomi podświetlony program w menu Start jako administrator.
Dracs,
12

Aby automatycznie uruchamiać się CMDjako administrator przy każdym kliknięciu (bez konieczności klikania prawym przyciskiem myszy lub tworzenia dodatkowych skrótów), można to łatwo rozwiązać:

  1. W Edytorze rejestru przejdź do:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    • Jeśli nie ma Layersfolderu , musisz go utworzyć i nazwać:
      Kliknij AppCompatFlagsfolder prawym przyciskiem myszy wybierz NewKey
  2. Kliknij prawym przyciskiem myszy Layers, wybierz NewString Value. Ustaw nazwę nowej wartości ciągu na pełną ścieżkę do CMD.EXEwiersza polecenia ( C:\Windows\System32\cmd.exe) (tj. )

  3. Kliknij dwukrotnie nową wartość ciągu, aby ją zmodyfikować, i ustaw „Dane wartości” na RUNASADMIN.

Miałem tę samą irytację i to działało dla mnie.

niebieski
źródło
11

Jeśli chcesz, aby CMD.exe był zawsze uruchamiany jako administrator, po prostu dodaj poniżej kod reg do rejestru:

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"
M. Sasan MH
źródło
2
To działało dla mnie w systemie Windows 8.1. Teraz właśnie nacisnąłem Windows-R, cmd, Enter. Działa również do otwierania okna poleceń z Eksploratora plików za pomocą Shift-RightClick> Otwórz okno poleceń tutaj.
Troy Gizzi
1
Jeśli to zadziała, jest to poprawna odpowiedź, pomimo znacznie dłuższej obecnie akceptowanej wersji.
Xodarap777,
Działa to również w systemie Windows 10. Umieść zawartość w notatniku, zapisz ją z rozszerzeniem .reg i uruchom
Chris Halcrow,
4

Było kilka narzędzi, których użyłem, które były innymi obejściami (oprócz tego, o czym wspomniał Jesse).

Kiedy po raz pierwszy pojawiła się Vista, Microsoft wyszedł z „ podniesionym ” powerToy'em, który był dość przydatny i wykonał zadanie, a mimo to uważam (nie testowałem) działa na Windows 7. Upuść go w swoim środowisku ścieżki i możesz uruchomić „Elevate iisreset” z normalnego wiersza polecenia (lub nawet „Elevate cmd” od start / run lub utworzyć skrót)

Rex
źródło
Oto bezpośredni link do pobrania.
ashleedawg
4

Najprostszym sposobem na ominięcie wszystkich problemów związanych z UAC itp. Jest skonfigurowanie pozycji Harmonogramu zadań, aby uruchomić cmd.exe przy użyciu najwyższych uprawnień. Nie twórz dla niego zdarzenia wyzwalającego i upewnij się, że pole wyboru Zezwalaj na uruchamianie zadania na żądanie jest zaznaczone na karcie Ustawienia. Również na karcie Ustawienia upewnij się, że w menu rozwijanym „Jeśli zadanie jest już uruchomione, obowiązuje następująca reguła” ustawiono opcję Nie uruchamiaj nowej instancji.

Następnie utwórz skrót do tego na pulpicie i uruchom go stamtąd lub za pomocą skrótu klawiszowego lub przypnij skrót do paska zadań.

Zrobiłem to na moim systemie Windows 7 i działa idealnie.

Peter Wills
źródło
1
Ups, zapomniałem podać jedną ważną rzecz. Oto ścieżka docelowa skrótu do zadania. C: \ Windows \ System32 \ schtasks.exe / run / TN "wiersz polecenia bez UAC". Tekst w cudzysłowie jest tym, jak nazwiesz Zadanie podczas tworzenia Zadania.
Peter Wills,
nie
podawaj
2

Po prostu skopiuj i wklej cmd.exe i zmień jego nazwę na „cmda.exe” w folderze \ system32 \ (337 KB to nawet nic wielkiego ...). Opcja „Uruchom jako administrator” we właściwościach cmda.exe nie będzie już wyszarzona i możesz ustawić, aby zawsze działała jako administrator. Otrzymasz teraz dwa wiersze poleceń: pierwszy jest regularny, drugi ma uprawnienia (a) dmin. W Winpasku wyszukiwania można równie łatwo wpisać „cmda”, jak w przypadku „cmd”!

W przypadku menu kontekstowego cmd z uprawnieniami administratora upewnij się, że masz już plik cmda.exe, dodaj go do nowego pliku .reg i uruchom go

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

Zobaczysz dwie takie same linie w menu kontekstowym (shift); jeden wiersz polecenia bez podniesionego poziomu uprawnień i drugi z dodanym „(Administratorem)”.

Otóż ​​to...

Ikana
źródło
1

Utwórz skrót do cmd.exe, kliknij prawym przyciskiem myszy i wybierz właściwości, na karcie Skrót wybierz opcję Zaawansowane, zaznacz opcję Uruchom jako administrator.

WinOutreach2
źródło
1

Myślę, że najłatwiejszym sposobem, aby zawsze uruchamiać cmd jako administrator, jest utworzenie pliku .reg z kodem poniżej:

Windows Registry Editor Version 5.00

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

Wklej to w notatniku lub coś i zapisz jako plik .reg. Uwaga: To powoduje, że wiersz polecenia jest uruchamiany jako administrator dla wszystkich użytkowników. Aby zawsze uruchamiać się jako administrator tylko dla użytkownika, po prostu zmień HKEY_LOCAL_MACHINE na HKEY_CURRENT_USER

użytkownik 281995
źródło
1

Wszystko dzięki Jesse'emu Brohinsky'emu

Bardziej ulepszona wersja. Obejmuje to również katalog w tle, który umożliwia również otwieranie cmd z wnętrza folderu. Również ze względu na to możesz otworzyć CommandRomt jako nieadministracyjny.

Możesz także wyłączyć AdminApprovalMode. W ten sposób nie musisz uruchamiać się jako administrator, gdy jesteś administratorem. 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
źródło
0

Jedynym innym sposobem, niż wspomniany przez Dracsa, jest całkowite wyłączenie UAC

Kanadyjczyk Luke
źródło
0

Poniższe działa dla mnie

@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"
:--------------------------------------

otrzymasz ten sam monit uac potwierdzający, że administrator runas znalazł go jakiś czas temu @ stackexchange

sudhi
źródło