Czy istnieje sposób na uruchomienie programu lub polecenia z podwyższonymi uprawnieniami, gdy jestem już w wierszu polecenia bez podniesionego poziomu uprawnień?
Dokładnie ta sama akcja, która zostałaby wykonana, gdy kliknę skrót programu i wybierz Uruchom jako administrator .
Polecenie runas prawdopodobnie nie jest rozwiązaniem - prosi o hasło, ale chcę tylko okno dialogowe UAC .
windows
administrator
privileges
Lukas Cenovsky
źródło
źródło
Istnieje sposób, aby to zrobić w PowerShell:
źródło
powershell -Command "Start-Process 'C:\program.exe' -Verb runAs"
powershell -Command "Start-Process 'gvim' 'c:\windows\system32\drivers\etc\hosts' -Verb runAs"
. Dzięki!$p = Start-Process powershell -Verb runAs -ArgumentList "-Command ``"& { ``$Host.SetShouldExit(123) }``"" -PassThru; $p.ExitCode
Opierając się na Rustama „s odpowiedzi , możesz:
su.bat
plik wsadowy gdzieś w domyślnym% PATH%, używając następującej jednowierszowej:@powershell start -verb runas %*
function su {start -verb runas @args}
Teraz możesz wydawać
su <command> [parameters]
w dowolnej powłoce!źródło
RunAdmin to małe narzędzie (150 KB), które pozwala uruchamiać program z wiersza poleceń z podwyższonymi uprawnieniami (pokaże UAC). W przeciwieństwie do Hidden Start jest bezpłatny.
źródło
Działa to na wszystkich platformach, w tym na systemie Windows 10. Moje potrzeby są proste, być może możesz dostosować podejście, jeśli potrzebujesz zasilania .
Wymyśliłem mały skrypt o nazwie,
sudo.cmd
nazwany dla polecenia sudo systemu Linux. Działa wystarczająco dobrze, jak myśli. Naszkicowałem wymagania, kroki, które należy wykonać, a skrypt jest na dole z przykładem. Najpierw słowo ostrzeżenia.OSTRZEŻENIE : Domyślnie polecenie jest uruchamiane w katalogu systemu Windows.
cd
Najpierwbędziesz chciał znaleźć sięw bezpiecznym miejscu.wymagania :
lub powłoki cmd.
sudo
polecenie w systemie Linux.rozwiązanie :
sudo.cmd
sudo.lnk
.sudo
skrót w ścieżce systemu Windows, aby był widoczny.Start in:
opróżnij ścieżkę.Advanced
] - SprawdźRun as Administrator
Po wpisaniu
sudo dir
w wierszu polecenia system Windows wyświetliWyskakujące okienko kontroli dostępu. Jeśli klikniesz „[
NO
]”, nic się nie stanie. System Windows wyświetli komunikat „Access is denied.
”.Po kliknięciu „[
YES
]” polecenie katalogu działa z podwyższonym poziomem uprawnień. Oczywiście prawdopodobnie potrzebujesz czegoś bardziej interesującego, takiego jak zatrzymanie lub zapytanie dotyczące usługi:SDRSVC to nazwa usługi „Kopia zapasowa systemu Windows”, która pokazuje następujące informacje w osobnym oknie Cmd:
Sam
sudo.cmd
skrypt jest bardzo prosty. Jak powiedziałem, moje potrzeby są proste. Chcę tylko zatrzymać i uruchomić usługi podczas wdrażania kodu do testowania.sudo.cmd
:pause
Komenda czeka, aby przejrzeć wyniki. Jeślipause
wyjmiesz okno administracyjne, zamknie się i nie wiesz, czy polecenie zadziałało, czy nie.ERRORLEVEL
Z polecenia jest zwracany jako dobrze.źródło
Działa to w systemie Windows 10, nie testowano z innymi wersjami systemu Windows.
Przykład otwierania notatnika z prawami administratora z cmd.exe, który uruchamia PowerShell, który prosi o podniesienie uprawnień.
Spowoduje to wyświetlenie okna dialogowego UAC (jeśli jest włączone) z [Tak] [Nie] lub poprosi o hasło administratora.
Innym przykładem otwarcia pliku hosts za pomocą notatnika jest:
Więcej informacji: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6
źródło
-ArgumentList
parametrem, a nie tylko dodatkowymi parametrami do rozpoczęcia procesu.Spójrz na Start ++ - ma tę funkcjonalność wraz z wieloma innymi przydatnymi rzeczami. Aby uruchomić z monitem UAC, po prostu użyj
sudo
nazwy programu w wierszu polecenia, jak pokazano tutaj:Oto kilka innych funkcji (możesz także dodać własne):
źródło
Możesz ustawić
__COMPAT_LAYER=RunAsAdmin
. Następnie polecenia będą działały w osobnej podwyższonej wysokościcmd
.Przykład
.bat
:Wszystkie opcje trybu zgodności są wymienione w pakiecie MS Application Compatibility Toolkit.
źródło
;
jako separatora komentarzy. „Pliki wsadowe nie rozpoznają średnika i generalnie powodują komunikat o błędzie dotyczący złego polecenia.”