Jak skonfigurować moją aplikację do automatycznego uruchamiania jako administrator?

9

Utworzyłem plik łatki z plikiem wykonywalnym za pomocą funkcji Winrar SFX.
Po uruchomieniu pliku SFX i wyodrębnieniu kończy się mój plik wykonywalny nigdy się nie uruchomi, ponieważ nie ma uprawnień administratora. Zastanawiam się, JAK mogę przyznać administratorowi dostęp do tego pliku w jakiś sposób programistyczny (np. Plik wsadowy).

Wiem, że mogę kliknąć prawym przyciskiem myszy, przejść do „Właściwości”, wybrać zakładkę „Zgodność”, a następnie zaznaczyć pole „Wykonaj jako administrator”.

Problem polega na tym, że użytkownicy, którzy pobiorą tę poprawkę, nie wiedzą o niej (a mój exe działa tylko wtedy, gdy klikniesz ją prawym przyciskiem myszy i wybierzesz „Otwórz jako administrator”, w przeciwnym razie nigdy nie otworzy ani nie wyświetli wyskakującego okienka UAC).

Próbowałem na różne sposoby, np. „Winda biegacza (Elevate me)” itp., Ale tak naprawdę szukam czegoś prostszego niż.
Muszę tylko sprawić, by exe zawsze działał jako administrator.

Rafael Vidal
źródło
2
Uwaga do modów: tutaj nie jest wymagana migracja do SO .
Karan

Odpowiedzi:

15

To, co musisz zrobić, to osadzić manifest aplikacji w EXE.

  1. Zapisz następujące pliki jako plik tekstowy o nazwie App.exe.manifest :

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
                </requestedPrivileges>
            </security>
        </trustInfo>
    </assembly>
    
  2. Pobierz zestaw Windows SDK.

  3. Wewnątrz znajdziesz mt.exe, tj. Manifest Tool . Wywołaj go w następujący sposób:

    mt.exe -manifest "App.exe.manifest" -outputresource:"App.exe";#1
    
  4. Jeśli nie ma żadnych błędów, gotowe. Możesz usunąć plik manifestu i rozpowszechniać tylko plik EXE. Uruchomienie powinno powodować, że za każdym razem automatycznie żąda dostępu administratora.

Źródło

Karan
źródło
Przetestuję to. Nawiasem mówiąc, czy można uczynić ten „Manifest” nieco lepszym? Jak wykonywanie go jako administratora bez żądania dostępu administratora? Dzięki
Rafael Vidal,
Czy chcesz, aby dyskretnie podwyższał i uzyskiwał dostęp administratora? Chyba że wyłączysz UAC, to nie jest możliwe, w przeciwnym razie jaki byłby sens UAC i czy nie uważasz, że każde złośliwe oprogramowanie to robi?
Karan
Rozumiem twoją tezę, ale wiem, że istnieją sposoby ... na pewno nie jest to łatwe, ale istnieją, podobnie jak program "Elevate Me" ... W każdym razie wystarczające jest uruchomienie exe jako administrator. Naprawdę dziękuję z góry
Rafael Vidal
1
Wszystkie takie programy, które omijają monit o podniesienie uprawnień, wykorzystują dobrze znaną sztuczkę Harmonogram zadań, która wymaga dostępu administratora. Ponieważ chcesz to zrobić na dowolnym dowolnym komputerze, na którym wykonywany jest Twój SFX, nie możesz cicho utworzyć zaplanowanego zadania bez zgody użytkownika standardowego. W rzeczywistości, jeśli jakikolwiek program zrobiłby to na moim komputerze (po cichu utworzył zaplanowane zadanie z pominięciem UAC), natychmiast sklasyfikowałbym go jako złośliwe oprogramowanie i usunął.
Karan
Całkiem dobry Karan, działał idealnie. Chciałbym tylko zasugerować dodanie do odpowiedzi potrzeby uruchamiania CMD jako ADMIN, w przeciwnym razie to nie zadziała ... Jeszcze raz dziękuję
Rafael Vidal
2

Podczas tworzenia archiwum poproś o dostęp administracyjny .wprowadź opis zdjęcia tutaj

MDMoore313
źródło
MDMoore313 dziękuję za poświęcony czas, ale chyba nie wyjaśniłem się dobrze. Nie muszę uruchamiać SFX jako administrator. Muszę uruchomić określony plik jako admin („my_app.exe”), który znajduje się w pliku SFX. Chodzi o to, że podwójne kliknięcie tego pliku nie spowoduje jego uruchomienia. Jedynym sposobem, aby go uruchomić, jest kliknięcie go prawym przyciskiem myszy i wybranie „Uruchom jako administrator”
Rafael Vidal
@RafaelVidal czy SFX uruchamia twoją aplikację? Jeśli tak, Twoja aplikacja będzie miała uprawnienia administratora. Jeśli nie, zaktualizuję swoją odpowiedź.
MDMoore313
Nie, nie uruchamia aplikacji. Użytkownik musi to zrobić ręcznie, aby mógł zaznaczyć pole „Uruchom jako administrator” na karcie „Zgodność” lub kliknąć menu kontekstowe „Uruchom jako administrator”
Rafael Vidal
@RafaelVidal jest powód, dla którego nie chcesz, aby WinRAR uruchomił exe, i po prostu chcesz, aby użytkownik sam uruchomił SFX? wygląda na to, że osiągnąłby ten sam cel i rozwiązał problem administratora. Jeśli nadal koncentrujesz się na oznaczaniu programu do działania jako administrator, masz większe szanse na odpowiedź na temat przepełnienia stosu (oflaguj swoje pytanie do migracji)
MDMoore313
SFX do uruchamia plik, ale użytkownicy mogą później uruchomić ten plik samodzielnie, a wtedy nie będzie SFX do uruchomienia go. Właśnie dlatego exe musi zostać oznaczony jako „run as admin”
Rafael Vidal