Jak uruchomić program bez uprawnień administratora i ominąć monit UAC

Po uruchomieniu niektóre programy wymagają podniesienia uprawnień (tarcza obok ikony aplikacji), ale w rzeczywistości nie potrzebują uprawnień administratora do normalnego działania. Na przykład możesz ręcznie przyznać użytkownikom uprawnienia do folderu aplikacji w plikach ProgramFiles i/lub kluczach rejestru używanych przez program. Jeśli na komputerze włączona jest Kontrola konta użytkownika, pojawi się monit UAC, a system Windows poprosi użytkownika o wprowadzenie hasła administratora, jeśli spróbuje uruchomić taki program jako standardowy użytkownik.

Aby ominąć ten mechanizm, wielu administratorów po prostu wyłącza UAC lub przyznaje uprawnienia administratora, dodając konto użytkownika do grupy lokalnej „Administratorzy”. Oczywiście obie metody nie są bezpieczne. Żadna z tych metod nie jest zalecana do powszechnego stosowania, ponieważ zmniejszają bezpieczeństwo systemu Windows. W tym artykule przyjrzymy się, jak uruchomić program wymagający uprawnień administratora jako zwykły użytkownik i ukryć monit o podniesienie uprawnień UAC.

Zawartość:

Skonfiguruj uprawnienia użytkowników niebędących administratorami do uruchamiania programu

Program systemu Windows może po uruchomieniu poprosić Cię o uprawnienia administratora, jeśli:

  • Program musi uzyskać dostęp do katalogu systemowego lub pliku, do którego nie nadano uprawnień NTFS użytkownikom nieuprzywilejowanym;
  • Jeśli program został skompilowany ze specjalną flagą wymagającą podniesienia poziomu przy uruchomieniu (requireAdministrator).

W pierwszym przypadku do rozwiązania problemu wystarczy nadanie uprawnień użytkownika RW lub Full Control do katalogu programu lub wymaganego katalogu/pliku systemowego. Na przykład program przechowuje swoje pliki (logi, pliki konfiguracyjne itp.) we własnym folderze wC:Program Files (x86)SomeApplub jakiś katalog systemowy. Aby program działał poprawnie, użytkownik musi mieć uprawnienia do zapisu w tych plikach. Aby ten program działał normalnie, wymagane są uprawnienia administratora.

Aby program mógł działać jako użytkownik niebędący administratorem, wystarczy ręcznie nadać użytkownikowi (lub wbudowanej grupie Użytkownicy) uprawnienia do modyfikacji/zapisu pliku/katalogu na poziomie systemu plików NTFS

Aby znaleźć listę plików, folderów i kluczy rejestru, do których program uzyskuje dostęp, użyj metodyMonitor procesu(https://learn.microsoft.com/en-us/sysinternals/downloads/procmon). Włącz filtr według nazwy procesu programu i znajdź wszystkie zasoby. Jeśli spróbujesz uzyskać do nich dostęp, wyświetli się komunikat Odmowa dostępu. Nadaj niezbędne uprawnienia do folderów/plików/kluczy rejestru.

Notatka. Właściwie nie jest zalecane przechowywanie zmieniających się danych aplikacji w katalogu C:Program Files. Lepiej przechowywać dane aplikacji w profilu użytkownika. Jest to jednak kwestia lenistwa i niekompetencji twórców aplikacji.

Zezwalaj użytkownikom standardowym na uruchamianie programu wymagającego uprawnień administratora

Wcześniej opisaliśmy, jak wyłączyć monit UAC dla określonego programu za pomocąZaklinacz Ludziparametr. Metoda ta nie jest jednak wystarczająco elastyczna.

Przyjrzyjmy się prostszemu sposobowi wymuszenia działania dowolnego programu bez uprawnień administratora (bez wprowadzania hasła administratora) i z włączoną funkcją UAC (poziom 4, 3 lub 2 suwaka UAC).

Weźmy jako przykład Edytor rejestru —regedit.exe(znajduje się w folderze C:Windows). Zwróć uwagę na tarczę UAC obok ikony aplikacji. Ta ikona oznacza, że ​​do uruchomienia tej aplikacji wymagane jest podniesienie uprawnień UAC.

Kiedy biegnieszregedit.exe, zobaczysz monit Kontroli konta użytkownika z prośbą o podanie poświadczeń administratora (Do you want to allow this app to make changes to your device?). Jeśli nie podasz hasła i nie potwierdzisz podniesienia poziomu, aplikacja nie uruchomi się.

Spróbujmy ominąć żądanie UAC dla tego programu. Utwórz plik tekstowyuruchom jako-non-admin.batzawierający następujący kod na pulpicie:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Aby wymusić działanie programu regedit.exe bez uprawnień administratora i pominąć monit UAC, po prostu przeciągnij plik EXE, który chcesz uruchomić, do pliku BAT na pulpicie.

Edytor rejestru powinien zostać uruchomiony bez monitu UAC i bez wprowadzania hasła administratora. Jeśli otworzysz Menedżera zadań i dodasz plikPodniesionyw kolumnie zobaczysz, że istnieje proces regedit.exe bez podwyższonego statusu (uruchomiony z uprawnieniami użytkownika innego niż administrator).

Spróbuj edytować dowolny element w gałęzi rejestru HKEY_LOCAL_MACHINE. Jak widać, użytkownik nie może edytować pozycji w tym kluczu rejestru (użytkownik nie ma uprawnień do zapisu kluczy rejestru systemowego). Można jednak dodawać lub edytować klucze i parametry rejestru w gałęzi użytkownika (HKEY_CURRENT_USER).

W ten sam sposób możesz uruchomić dowolną aplikację za pomocą pliku BAT. Wystarczy podać ścieżkę do pliku wykonywalnego.

uruchom-aplikację jako-non-admin.bat
Set ApplicationPath="C:Program FilesSomeApptestapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

Możesz także dodać menu kontekstowe, które umożliwia uruchamianie wszystkich aplikacji bez podniesienia poziomu. Aby to zrobić, utwórz plikRunAsUser.REGskopiuj do niego następujący kod, zapisz i zaimportuj go do rejestru systemu Windows, klikając dwukrotnie plik reg (do zastosowania tej zmiany będziesz potrzebować uprawnień administratora).

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT*shellforcerunasinvoker]
@="Run as user without UAC privilege elevation"
[HKEY_CLASSES_ROOT*shellforcerunasinvokercommand]
@="cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" "%1"""

Następnie, aby uruchomić dowolną aplikację bez uprawnień administratora, po prostu wybierz „Uruchom jako użytkownik bez podnoszenia uprawnień UAC” z menu kontekstowego Eksploratora plików systemu Windows.

Możesz wdrożyć ten element menu na wszystkich komputerach w domenie, importując parametry rejestru za pomocą obiektu GPO.

Przypominam, że za pomocąRUNASINVOKERtryb programu nie pozwoli na podniesienie uprawnień. RunAsInvoker pomija monit UAC i informuje program, że powinien działać z uprawnieniami bieżącego użytkownika i nie pytać o podniesienie uprawnień. Jeśli program naprawdę potrzebuje podwyższonych uprawnień do edycji ustawień systemowych lub plików, nie będzie działać lub ponownie poprosi o uprawnienia administratora.

Jak ominąć UAC za pomocą opcji RunAsInvoker w CMD?

Zmienna środowiskowa __COMPAT_LAYER umożliwia ustawienie różnych poziomów zgodności dla aplikacji (Zgodnośćwe właściwościach pliku EXE). Ta zmienna pozwala określić ustawienia zgodności, z którymi chcesz uruchomić program. Na przykład, aby uruchomić aplikację w trybie zgodności z Windows 8 w rozdzielczości 640×480, ustaw następujące opcje:

set __COMPAT_LAYER=Win8RTM 640x480

Zmienna __COMPAT_LAYER posiada kilka interesujących nas opcji. Są to następujące parametry:

  • Zaklinacz Ludzi– uruchomić aplikację z uprawnieniami procesu nadrzędnego bez monitu UAC;
  • Najwyższy– uruchomić program z najwyższymi uprawnieniami dostępnymi dla użytkownika (wyświetli się monit UAC, jeśli użytkownik ma uprawnienia administratora);
  • Uruchom jako administrator– uruchom aplikację jako administrator (zawsze pojawi się monit UAC).

Oznacza to, że parametr RunAsInvoker nie przyznaje uprawnień administratora, po prostu pomija monit UAC.

Następujące polecenia włączają tryb RunAsInvoker dla bieżącego procesu i uruchamiają określony program bez podniesienia uprawnień:

set __COMPAT_LAYER=RUNASINVOKER
start "" "C:Program FilesMyApptestapp.exe"

Włącz tryb RunAsInvoker w manifeście pliku EXE

Jak wspomniano powyżej, system Windows wyświetla ikonę tarczy UAC w przypadku programów wymagających podwyższonych uprawnień do działania. Programiści ustawiają ten wymóg podczas kompilacji aplikacji w programieoczywisty

Możesz edytować manifest dowolnego pliku EXE i wyłączyć wymóg uruchamiania programu w trybie podwyższonym.

Skorzystaj z darmowegoHaker zasobównarzędzie do edycji manifestu programu. Otwórz plik wykonywalny programu w Resource Hacker.

W tym przykładzie będę edytować manifest plikuAutologon.exenarzędzie firmy Sysinternals, za pomocą którego można automatycznie zalogować się do systemu Windows bez hasła.

Na drzewie po lewej stronie idź doOczywistysekcję i otwórz manifest programu. Zwróć uwagę na następującą sekcję XML:

<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>

Zwymaga administratoraopcja włączona, system Windows zawsze uruchamia ten program z uprawnieniami administratora.

Zmień wymaganieAdministratora najako Invokeri zapisz zmiany w pliku .exe.

Zauważ, że teraz osłona UAC zniknęła z ikony programu i możesz uruchomić go jako bieżący użytkownik bez pytania o hasło administratora.

Jeśli plik wykonywalny aplikacji jest podpisany podpisem cyfrowym (certyfikat Code Signing), to po modyfikacji pliku exe może przestać działać lub wyświetlić ostrzeżenie.

W takim przypadku możesz wymusić na programie użycie zewnętrznego pliku manifestu. Utwórz zwykły plik tekstowynazwaaplikacji.exe.manifest(Na przykład,Autologon.exe.manifest) w katalogu z plikiem exe i skopiuj do niego kod manifestu z Resource Hacker. Zamień requireAdministrator najako Invoker. Zapisz plik manifestu.

Przeczytaj więcej:Jak uzyskać uprawnienia administratora systemu Windows bez hasła

Aby system Windows zawsze próbował użyć zewnętrznego pliku manifestu podczas uruchamiania plików EXE, włącz specjalny parametr rejestru:

REG ADD "HKLMSOFTWAREMicrosoftWindowsCurrentVersionSideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /f

Uruchom ponownie system Windows i upewnij się, że program korzysta z zewnętrznego pliku manifestu i działa bez uprawnień administratora.

Utwórz skrót, aby uruchomić program z zapisanym hasłem administratora

Jeśli metody uruchamiania programu zZaklinacz Ludziflaga nie działa w przypadku starszej aplikacji, możesz spróbować uruchomić taką aplikację w sesji użytkownika, korzystając z zapisanych poświadczeń administratora. Jest to najmniej bezpieczny sposób uruchamiania programów bez przyznawania użytkownikowi uprawnień administratora lokalnego, dlatego celowo pozostawiliśmy go na końcu.

Aby otworzyć program, utwórz nowy skrót na pulpicie. Określ nazwę komputera, nazwę administratora lokalnego i pełną ścieżkę do pliku wykonywalnego aplikacji docelowej.

Na przykład:

runas /user:wks-123root /savecred "C:CorpAppmyapp.exe"

Przy pierwszym uruchomieniu programu otworzy się wiersz poleceń, w którym zostaniesz poproszony o podanie hasła administratora.

Polecenie Uruchom jako, gdy jest uruchamiane z/ZAPISZopcja zapisuje nazwę użytkownika i hasło w Menedżerze poświadczeń systemu Windows.

Przy następnym uruchomieniu skrótu narzędzie runas automatycznie pobierze zapisane hasło z Menedżera poświadczeń i użyje go do uruchomienia aplikacji na określonym koncie administratora lokalnego (nie będzie monit o podanie hasła przy każdym otwarciu skrótu).

Następujące polecenie wyświetla listę zapisanych haseł w Menedżerze poświadczeń:

RunDll32.exe keymgr.dll,KRShowKeyMgr

Podczas uruchamiania takiego skrótu w systemie Windows 11 pojawia się błąd:

RUNAS ERROR: Unable to run - C:CorpAppmyapp.exe
740: The requested operation requires elevation.

Aby to naprawić, zmień polecenie we właściwościach skrótu. Zastąp to:

C:WindowsSystem32runas /profile /user:WKS-123root /savecred "cmd.exe /C C:CorpAppmyapp.exe"

Korzystanie z opcji /savecred nie jest bezpieczne, jak wspomnieliśmy powyżej. Dzieje się tak, ponieważ użytkownik, który ma zapisane w swoim profilu hasło administratora, może go użyć do uruchomieniakażdyprogramu lub polecenia z podwyższonymi uprawnieniami, a nawet zresetować hasło konta administratora. Hasła przechowywane w Menedżerze poświadczeń mogą być również przesyłane w postaci zwykłego tekstu za pomocą narzędzi takich jak Mimikatz, dlatego lepiej wyłączyć korzystanie z zapisanych haseł.

W systemie Windows można wyłączyć zapisywanie hasła w Menedżerze poświadczeń, korzystając z opcji Zasad grupyDostęp sieciowy: Nie zezwalaj na przechowywanie haseł i danych uwierzytelniających w celu uwierzytelnienia sieciowego(Konfiguracja komputera -> Ustawienia systemu Windows -> Ustawienia zabezpieczeń -> Zasady lokalne -> Opcje zabezpieczeń).

Istnieje kilka narzędzi innych firm, które umożliwiają obejście wady używania zapisanego hasła administratora w runach. Na przykład,AdmiLink,Uruchom jako Rob,UruchomAsSpc. Te aplikacje umożliwiają przechowywanie zaszyfrowanego hasła administratora i bezpieczne uruchamianie programu z uprawnieniami administratora. Narzędzia te nie pozwolą użytkownikowi uruchomić żadnej aplikacji ani polecenia z zapisanymi poświadczeniami, ponieważ podczas uruchamiania sprawdzają ścieżkę i sumę kontrolną pliku wykonywalnego.

Related Posts