Jak otworzyć wiersz polecenia z podwyższonym poziomem uprawnień za pomocą wierszy poleceń w normalnym cmd?
Na przykład używam, runas /username:admin cmd
ale polecenie cmd, które zostało otwarte, nie wydaje się być podniesione! Jakieś rozwiązania?
Jak otworzyć wiersz polecenia z podwyższonym poziomem uprawnień za pomocą wierszy poleceń w normalnym cmd?
Na przykład używam, runas /username:admin cmd
ale polecenie cmd, które zostało otwarte, nie wydaje się być podniesione! Jakieś rozwiązania?
Odpowiedzi:
Napotkałem ten sam problem i jedynym sposobem, w jaki mogłem otworzyć CMD jako administrator z CMD, było wykonanie następujących czynności:
powershell -Command "Start-Process cmd -Verb RunAs"
i naciśnijEnterZgodnie z dokumentacją model zabezpieczeń systemu Windows ...
nie przyznaje nigdy uprawnień administracyjnych. Nawet administratorzy działają ze standardowymi uprawnieniami, gdy wykonują zadania inne niż administracyjne, które nie wymagają podwyższonych uprawnień.
Dostępna jest opcja Utwórz to zadanie z uprawnieniami administratora w oknie dialogowym Utwórz nowe zadanie ( Menedżer zadań> Plik> Uruchom nowe zadanie ), ale nie ma wbudowanego sposobu na efektywne podniesienie uprawnień za pomocą wiersza poleceń.
Istnieją jednak narzędzia innych firm (wewnętrznie opierające się na interfejsach API systemu Windows), których można użyć do podniesienia uprawnień z poziomu wiersza poleceń:
nircmdc elevate cmd
npm install -g windosu
(wymaga zainstalowanego node.js )sudo cmd
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
końcu zadziałało. Inne runas /user:...
sposoby wymagały podania hasła, mimo że był już administratorem (tryb wsadowy zabity).
nircmdc elevate cmd
nircmd
, aby działać jak Linux sudo
, należy utworzyć sudo.bat
plik w drogę z tej treści: nircmd elevate %*
. Wtedy możesz na przykład zrobićsudo net stop W3SVC
windosu
:)
sudo.bat
(możesz zastąpićsudo
dowolną nazwą) z następującą zawartością
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
do folderu w swoimPATH
; jeśli nie wiesz, co to oznacza, po prostu przenieś te pliki doc:\windows\
sudo
będzie działać w oknie dialogowym Uruchom ( win+r) lub w pasku adresu eksploratora (to najlepsza część :))sudo.bat
(możesz zastąpićsudo
dowolną nazwą) z następującą zawartością
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
i sudo.bat
do folderu w swoimPATH
; jeśli nie wiesz, co to oznacza, po prostu przenieś te pliki doc:\windows\
sudo
będzie działać w oknie dialogowym Uruchom ( win+r) lub w pasku adresu eksploratora (to najlepsza część :))Cały czas korzystam z programów nirsoft (np. Nircmdc) i sysinternals (np. Psexec). Są bardzo pomocni.
Ale jeśli nie chcesz lub nie możesz korzystać z programu innej firmy, oto inny sposób, czysty system Windows.
Krótka odpowiedź : na podwyższonym poziomie możesz utworzyć zaplanowane zadanie z podwyższonymi uprawnieniami, które możesz później wywołać, gdy nie masz podwyższonych uprawnień.
Odpowiedź średniej długości : na podwyższonym poziomie utwórz zadanie z (ale wolę GUI harmonogramu zadań):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
Później, bez konieczności podnoszenia poziomu, wywołaj za pomocą
schtasks /run /tn cmd_elev
Długa odpowiedź : jest wiele niepewnych szczegółów; zobacz mój wpis na blogu "Uruchom program BEZ UAC, przydatny przy starcie systemu oraz w plikach wsadowych (użyj harmonogramu zadań)"
Moim ulubionym sposobem jest użycie PsExec.exe firmy SysInternals, dostępnego pod adresem http://technet.microsoft.com/en-us/sysinternals/bb897553
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
Przełącznik „-h” to ten, który robi magię:
-h Jeśli system docelowy to Vista lub nowszy, uruchom proces z podniesionym tokenem konta, jeśli jest dostępny.
Utwórz plik wsadowy, aby zapisać poświadczenia faktycznego konta administratora, używając /savecred
przełącznika. Spowoduje to wyświetlenie monitu o poświadczenia za pierwszym razem, a następnie zapisze zaszyfrowane hasło w menedżerze poświadczeń. Następnie przy każdym kolejnym uruchomieniu partia będzie działać jako pełny administrator, ale nie będzie monitować o poświadczenia, ponieważ są one przechowywane w postaci zaszyfrowanej w menedżerze poświadczeń, a użytkownik końcowy nie może uzyskać hasła. Poniższe okno powinno otworzyć CMD z podwyższonym poziomem uprawnień z pełnymi uprawnieniami administratora i poprosić o hasło tylko za pierwszym razem:
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
Chociaż oba rozwiązania dostarczone przez Dheeraj Bhaskar działają, niestety spowodują, że okno dialogowe UAC pojawi się na górze (kolejność z), ale nie będzie skupione (okno z fokusem to okno cmd / powershell wywołującego), więc muszę albo chwyć mysz i kliknij „tak” lub wybierz okno UAC za pomocą Alt + Shift + Tab. (Testowane na Win10x64 v1607 build14393.447; UAC = „[...] nie przyciemniaj [...]” .)
Poniższe rozwiązanie jest nieco niezręczne, ponieważ używa dwóch plików, ale zachowuje prawidłową kolejność fokusu, więc nie są wymagane żadne dodatkowe działania myszy / klawiatury (poza potwierdzeniem okna dialogowego UAC: Alt + Y ).
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
Biegnij z su
.
Używam już od jakiegoś Elevate
czasu.
To opis - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
Kopiuję bin.x86-64\elevate.exe
z folderu .zip
do C:\Program Files\elevate
i dodaję tę ścieżkę do pliku PATH
.
Wtedy GitBash mogę uruchomić coś takiego jak elevate sc stop W3SVC
wyłączenie IIS
usługi.
Uruchomienie polecenia powoduje wyświetlenie UAC
okna dialogowego, odpowiednio skoncentrowanego za pomocą klawiatury, a po zaakceptowaniu okna wracam do mojej powłoki.
..
@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF
:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1
zapisz ten skrypt jako „god.cmd” w swoim systemie32 lub w innym miejscu, do którego prowadzi ścieżka ....
jeśli otworzysz cmd w e: \ mypictures \ i wpiszesz god, zapyta Cię o poświadczenia i przeniesie Cię z powrotem w to samo miejsce co administratora ...
Podobnie jak w przypadku niektórych innych powyższych rozwiązań, utworzyłem plik elevate
plik wsadowy, który uruchamia okno PowerShell z podwyższonym poziomem uprawnień, omijając zasady wykonywania, aby umożliwić uruchamianie wszystkiego, od prostych poleceń po pliki wsadowe po złożone skrypty PowerShell. Zalecam umieszczenie go w folderze C: \ Windows \ System32 dla ułatwienia użytkowania.
Oryginalne elevate
polecenie wykonuje swoje zadanie, przechwytuje dane wyjściowe, zamyka zwołane okno programu PowerShell, a następnie wraca, zapisując przechwycone dane wyjściowe w oryginalnym oknie.
Stworzyłem dwa warianty elevatep
i elevatex
, które odpowiednio wstrzymują i utrzymują otwarte okno PowerShell, aby uzyskać więcej pracy.
https://github.com/jt-github/elevate
A na wypadek, gdyby mój link kiedykolwiek umarł, oto kod oryginalnego pliku wsadowego Elevate:
@Echo Off
REM Executes a command in an elevated PowerShell window and captures/displays output
REM Note that any file paths must be fully qualified!
REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue
if "%1"=="" (
REM If no command is passed, simply open an elevated PowerShell window.
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
REM Copy command+arguments (passed as a parameter) into a ps1 file
REM Start PowerShell with Elevated access (prompting UAC confirmation)
REM and run the ps1 file
REM then close elevated window when finished
REM Output captured results
IF EXIST %temp%\trans.txt del %temp%\trans.txt
Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
Type %temp%\trans.txt
)
Można użyć tymczasowej zmiennej środowiskowej do użycia ze skrótem z podwyższonym poziomem uprawnień (
start.cmd
setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"
ascladm.lnk (skrót)
_ properties\advanced\"run as administrator"=yes
(aby wprowadzić zmiany ścieżki, musisz tymczasowo utworzyć env.Variable
)
_ properties\target="%valueName_betterSpecificForEachCase%\ascladm.cmd"
_ properties\"start in"="%valueName_betterSpecificForEachCase%"
ascladm.cmd
setx valueName_betterSpecificForEachCase=
reg delete HKEY_CURRENT_USER\Environment /F /V valueName_betterSpecificForEachCase
"%~dp0fileName_targetedCmd.cmd"
) (targetCmd jest wykonywany w podwyższonym oknie cmd)
Chociaż są to 3 pliki, możesz umieścić wszystko (w tym targetCmd) w jakimś podfolderze (nie zapomnij dodać nazwy folderu do poprawek) i zmienić nazwę „start.cmd” na jedyną nazwę celu
Dla mnie wygląda to na najbardziej natywny sposób robienia tego, podczas gdy cmd nie ma potrzebnego polecenia
Nie jestem pewien, czy narzędzie ExecElevated.exe (13KB) wykona zadanie ... ale może. Lub przynajmniej być przydatnym dla innych o podobnych potrzebach, którzy odwiedzili tę stronę tak jak ja (ale nie znalazłem rozwiązania, więc ostatecznie stworzyłem narzędzie samodzielnie w .Net).
Uruchomi aplikację z podwyższonym tokenem (w trybie administratora). Ale otrzymasz okno dialogowe UAC, aby potwierdzić! (może nie, jeśli UAC zostało wyłączone, nie testowałem tego).
Konto wywołujące narzędzie musi również mieć administratora. oczywiście prawa.
Przykład użycia:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
W metodzie Dheeraj Bhaskar z Powershell brakuje w niej miejsca, przynajmniej w przypadku wcielenia Powershell w Windows 10.
Linia poleceń w jego sudo.bat powinna brzmieć
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
Zwróć uwagę na dodatkową spację po% cd%
;) Frode
Oto sposób na integrację z eksploratorem. Po kliknięciu prawym przyciskiem myszy dowolnego folderu w Eksploratorze Windows pojawi się dodatkowa pozycja menu:
Oto kroki:
* Użyj pushd zamiast cd, aby umożliwić działanie na dowolnym napędzie. :-)
Możesz użyć następującej składni, miałem to samo pytanie i nie sądziłem, że skrypt powinien być potrzebny.
runas / profile / user: domena \ nazwa użytkownika cmd
To zadziałało dla mnie, może być inaczej w Twojej sieci.
Zrobiłem to łatwo, używając tego polecenia w cmd
runas / netonly / user: Administrator \ Administrator cmd
po wpisaniu tego polecenia musisz podać swoje hasło administratora (jeśli nie znasz swojego hasła administratora, pozostaw je puste i naciśnij Enter lub wpisz coś, zadziałało dla mnie).
Istnieje kilka sposobów otwierania polecenia cmd z podwyższonym poziomem uprawnień, ale tylko Twoja metoda działa ze standardowego wiersza polecenia. Wystarczy umieścić user
nie username
:
runas /user:machinename\adminuser cmd
Zobacz odpowiednią pomoc od społeczności Microsoft .
Użyłem, runas /user:domainuser@domain cmd
który pomyślnie otworzył podwyższony monit.