7

Niedawno próbowałem nadać moje uprawnienia administratora aplikacji bez pytania systemu "Czy chcesz nadać uprawnienia administratora?" i znalazłem sposób, który działa doskonale.Co właściwie robi "__COMPAT_LAYER"?

Rozwiązanie I Found

stworzyłem plik bat nazwie nonadmin.bat i napisał poniższy kod w nim

cmd min C set __COMPAT_LAYER=RunAsInvoker && start %1 

i jeśli przeciągnij dowolny exe na to, że daje im uprawnienia administratora (zanim nie pozwolił mi uzyskać dostępu do zmiennych środowiskowych bez niego, ale po przeciągnięciu pliku na dysku zadziałało).

Pytanie

Teraz moje pytanie brzmi: -

  1. co faktycznie oznacza '__COMPAT_LAYER' i co to robi?
  2. Jak usunąć takie rzeczy, aby ponownie prosiły o uprawnienia administratora?
  3. Czy to zmniejsza bezpieczeństwo systemu?
+0

Czyni to, co mówi. Ustawia opcje zgodności. Twoje przykłady będą działać tylko dla administratorów. Użytkownicy, którzy nie są administratorami, będą mieli błąd. –

+0

@Noodles, proszę wyjaśnić i wyjaśnić odpowiedź na te 3 pytania. –

+4

Prawdopodobnie powinno się przeczytać "cmd/min/c ..."? – TripeHound

Odpowiedz

14

__COMPAT_LAYER i jak go używać
__COMPAT_LAYER jest zmienna system, który pozwala na ustawienie warstw ze zgodnością, które są ustawienia można dostosować po kliknięciu prawym przyciskiem myszy na plik wykonywalny, wybierz Właściwości, i przejdź do zakładki Zgodność.

Imgur

oprócz jednego wiedzieć o Istnieje several options to choose from: - działa w 256 kolorach

  • 640x480 -

    • 256Color pracuje w rozdzielczości 640x480 ekran
    • DisableThemes - Disable Visual Themes
    • Win95 - uruchamia program w trybie zgodności z Windows 95
    • Win98 - uruchamia program w trybie zgodności z Windows 98/ME
    • Win2000 - uruchamia program w trybie zgodności z Windows 2000
    • NT4SP5 - Uruchamia program w trybie zgodności dla systemu Windows NT 4.0 SP5

    Można użyć wielu opcji, oddzielając je spacją: set __COMPAT_LAYER=Win98 640x480

    wyłączające __COMPAT_LAYER Zmienna
    Ustawienia te utrzymują się tak długo, jak istnieje zmienna. Zmienna zatrzymuje się, gdy wiersz polecenia, w którym ustawiono zmienną, zostanie zamknięty lub gdy zmienna zostanie ręcznie rozbrojona przy użyciu komendy set __COMPAT_LAYER=.

    Ponieważ ustawiasz zmienną za pomocą skryptu wsadowego, zmienna jest automatycznie anulowana po zakończeniu przeciągania pliku wykonywalnego i zamknięciu skryptu. Ważne jest, aby pamiętać, że ustawienia zmiennych pozostają w przypadku wszystkich procesów podrzędnych, które są tworzone przez wybrany plik wykonywalny.

    bezpieczeństwa Korzystanie __COMPAT_LAYER
    Ustawienie __COMPAT_LAYER do RunAsInvoker faktycznie nie daje uprawnień administratora, jeśli nie mają do nich; po prostu zapobiega wyświetlaniu się wyskakującego okna UAC, a następnie runs the program as whatever user called it. W związku z tym można z niego bezpiecznie korzystać, ponieważ nie uzyskujesz magicznie praw administratora.

    Możesz również ustawić zmienną na RunAsHighest (uruchamia tylko UAC, jeśli posiadasz prawa administratora, ale nie nadajesz uprawnień administratora, jeśli ich nie masz) lub RunAsAdmin (zawsze wyzwala UAC).

  • +0

    Dziękuję za szczegółowe wyjaśnienie, przyjacielu, ale muszę znać 2 rzeczy. 1) Przeczytałem, że jest to zmienna środowiskowa, ale gdy tylko szukam jej w zmiennych środowiskowych, nie ma tam żadnej takiej rzeczy. 2) Jak powiedziałeś, aby to usunąć, muszę napisać "set __COMPAT_LAYER =" LUB "ustawić __COMPAT_LAYER = NULL", ale kiedy wykonuję te polecenia, monit UAC nie pojawia się ponownie. Co powinienem zrobić, aby pojawiły się ponownie? –

    +0

    Nie mogę odtworzyć twojego problemu, ale jak już mówię w moim ostatnim zdaniu, możesz "być w stanie powiedzieć" set __COMPAT_LAYER = RunAsAdmin' – SomethingDark

    +0

    @Agent_Spock: niektóre zmienne środowiskowe istnieją domyślnie, niektóre istnieją tylko jeśli je ustawisz; to jedna z tych ostatnich. Ponadto dwukrotne kliknięcie danego pliku wykonywalnego nie powoduje już wyświetlenia monitu UAC, co może oznaczać, że nie zawiera manifestu informującego system Windows, czy wymaga podniesienia, czy też nie. Kiedy tak się dzieje, Windows zgadywa. Być może Windows zauważył, że z powodzeniem uruchomiłeś go jako nieadministratora, i zdecydowałeś się podążać za pakietem. W każdym razie, jeśli nie ustawisz na stałe zmiennej środowiskowej w rejestrze lub w panelu sterowania, nie jest to przyczyną. –

    Powiązane problemy