2010-08-04 13:49:40 +0000 2010-08-04 13:49:40 +0000
128
128

Zmusić program do uruchomienia *bez* uprawnień administratora lub UAC?

Czy jest jakiś sposób, aby zmusić program, który normalnie wymaga uprawnień administratora (poprzez UAC) do uruchomienia bez nich? (tzn.: bez zachęty UAC i brak dostępu do całego systemu.)

Dodano: bez modyfikacji samego wykonywalnego.

  • *

Pomimo odpowiedzi Jamesa, znalazłem kilka sposobów, aby to zrobić:

  1. Modyfikując wykonywalny program mogę usunąć wpis trustInfo z manifestu (lub całkowicie go usunąć, więc mogę użyć zewnętrznego), co pozwoli na uruchomienie programu bez UAC. Niestety modyfikuje to program wykonywalny, więc wkrótce po tym kończy się on z powodu wewnętrznego testu sum kontrolnych.
  2. Używając Process Explorera mogę go uruchomić jako Ograniczony Użytkownik. Jednakże wydaje się to ograniczać go znacznie bardziej niż bym chciał (działa on jak Protected Mode IE, a więc ma dostęp znacznie mniej niż mój standardowy, nie podwyższony użytkownik).

Odpowiedzi (9)

76
76
76
2012-07-18 15:20:44 +0000
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Zapisz ten tekst w <name_of_file>.reg i dodaj go do rejestru Windows. (Podwójne kliknięcie na niego powinno wykonać tę sztuczkę.)

Następnie kliknij prawym przyciskiem myszy na aplikacji, którą chcesz uruchomić bez uprawnień administracyjnych i wybierz “Uruchom bez podwyższenia uprawnień”.

W niektórych przypadkach - niewielka ilość 0.1% programów może dwukrotnie zapytać o zachętę UAC.

57
57
57
2015-10-02 11:27:02 +0000

Save to nonadmin.bat:

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

Teraz możesz przeciągać i upuszczać programy, aby je uruchamiać bez administratora.

Nie wymaga to uprawnień administratora, jak zmiana klucza rejestru. Nie będzie też bałaganu w menu kontekstowym.

Bazując na odpowiedzi

  • *

Update: Powinieneś teraz pracować z programami, które mają także spację w nazwie.

35
35
35
2012-01-05 08:15:03 +0000

Mam nadzieję, że nie jestem spóźniony na imprezę, ale szukałem podobnego pytania i nie widząc tutaj odpowiedzi dowiedziałem się, że wbudowany w system Windows RunAscommand, kiedy działa jako administrator, może to zrobić z przełącznikiem /trustlevel.

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel <Level> should be one of levels enumerated
                  in /showtrustlevels.

To działało w moim przypadku. Ironia polega na tym, że uruchomienie programu wyraźnie bez elevation wymaga podpowiedzi typu elevated command prompt. Idźcie rysunek. :) Mam nadzieję, że to ci pomoże.

19
19
19
2016-09-09 20:16:13 +0000

Jeśli masz konkretną aplikację, którą chcesz zawsze uruchamiać bez UAC, możesz ją skierować do Rejestru (dodaj tekst do pliku REG i zaimportuj go do Rejestru):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\example\application.exe"="RunAsInvoker"

W przeciwieństwie do tej odpowiedzi , to rozwiązanie nie wymaga alternatywnego kliknięcia lub zmiany interakcji z użytkownikiem.

Microsoft nazywa ten proces dodaniem RunAsInvoker “Compatibility Shim” .

4
4
4
2019-01-25 11:54:23 +0000

Jeśli jest to plik setup (instalacja) exe, który wymaga uprawnień administracyjnych, istnieje sztuczka, aby uruchomić go bez podwyższonego dostępu:

Jeśli nazwa pliku zawiera słowa takie jak setup lub install windows siłą uruchamia go z podwyższonym dostępem, nawet jeśli nie wymaga podwyższonego dostępu:

Jeżeli . plik exe ma w sobie manifest, te heurystyki dla elevation nie mają zastosowania.

Na przykład, jeśli manifest wskazuje, że exe nie potrzebuje elevation, nawet włączenie któregokolwiek z tych słów do nazwy pliku nie spowoduje, że będzie on uruchamiany jako elevated.

Innym słowem kluczowym jest patch, jak podano w komentarzu przez Mgamerz .

Detekcja instalatora wykrywa pliki konfiguracyjne, co pomaga zapobiec uruchamianiu instalacji bez wiedzy i zgody użytkownika.

Detekcja instalatora dotyczy tylko:

  • 32-bitowych plików wykonywalnych.

  • Aplikacje bez wymaganego atrybutu poziomu wykonania.

  • Procesy interaktywne uruchamiane jako standardowy użytkownik z włączoną funkcją UAC.

Przed utworzeniem 32-bitowego procesu sprawdzane są następujące atrybuty w celu określenia, czy jest to program instalacyjny:

  • Nazwa pliku zawiera słowa kluczowe, takie jak “install”, “setup” lub “update”.

Tryb odczytu tutaj: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works

3
3
3
2011-05-18 01:05:06 +0000

Rozwiązałem ten problem dzisiaj za pomocą zestawu narzędzi do personalizacji aplikacji MS.

Postępowałem zgodnie z instrukcjami w artykule technicznym .

W zasadzie:

1) otrzymujesz zestaw narzędzi od MS tutaj .

2) Kliknij przycisk Fix

3) Wybierz opcję RunAsInvoker

4) Kliknij prawym przyciskiem myszy na fix i wybierz Install

2
2
2
2013-07-21 02:56:41 +0000

Podczas gdy w swoim pytaniu Andrew stwierdził, że nie do końca zadziałało:

Modyfikując wykonywalny mogę usunąć z manifestu (lub manifestu całkowicie, więc mogę użyć zewnętrznego) wpis “trustInfo”, pozwalając na uruchomienie programu bez UAC. Niestety modyfikuje to plik wykonywalny, więc wkrótce po wykonaniu testu z wewnętrzną sumą kontrolną wychodzi.

Udało mi się zmodyfikować zewnętrzny plik .manifestu dla używanego przeze mnie oprogramowania i zmienić

<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

na

<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />

Okazuje się, że używany przeze mnie program nie wymagał uprawnień administratora, więc mogłem uruchomić go na standardowym koncie użytkownika bez UAC i haseł administratora. Dzięki!

-2
-2
-2
2012-04-20 04:28:43 +0000

Naprawiłem ten problem, zmieniając uprawnienia w katalogu, który zawierał program.

Dodałem każdego użytkownika, który uruchomi ten program i nadałem mu uprawnienia “pełnej kontroli”. To rozwiązało problem i zostawiłem “run as admin” niezaznaczonym.

Nie mam żadnych obaw o bezpieczeństwo użytkowników, którzy będą uruchamiać program.

-5
-5
-5
2010-08-04 14:09:46 +0000

Nie, jeśli program wymaga UAC, to próbuje uzyskać dostęp do czegoś poza swoją piaskownicą. Program nie będzie działał poprawnie bez podwyższonego dostępu.

Jeśli chcesz pozbyć się powiadomienia, możesz wyłączyć UAC.

Wyłącz UAC na Windows Vista: Start, wpisz “user”. Kliknij na “Konta użytkowników”. W oknie, które się pojawi, kliknij na “User Account Control Settings”, a następnie wyłącz UAC.

Disable UAC on Windows 7: Start, wpisz “user”. Kliknąć na “Ustawienia kontroli konta użytkownika”. Przeciągnij pasek wyboru aż do samego dołu na “Never Notify”.