Jak zmusić mój program do uruchomienia jako administrator w systemie Windows 7 po zainstalowaniu mojego programu na komputerze klienckim ?
875
Jak zmusić mój program do uruchomienia jako administrator w systemie Windows 7 po zainstalowaniu mojego programu na komputerze klienckim ?
Odpowiedzi:
Będziesz chciał zmodyfikować manifest, który zostanie osadzony w programie. Działa to w Visual Studio 2008 i nowszych wersjach: Projekt + Dodaj nowy element, wybierz „Plik manifestu aplikacji”. Zmień
<requestedExecutionLevel>
element na:Użytkownik otrzymuje monit UAC po uruchomieniu programu. Używaj mądrze; ich cierpliwość szybko się wyczerpuje.
źródło
Dodanie
requestedExecutionLevel
elementu do manifestu to tylko połowa sukcesu; musisz pamiętać, że UAC można wyłączyć. Jeśli tak, musisz wykonać sprawdzenie starej szkoły i wyświetlić okno dialogowe błędu, jeśli użytkownik nie jest administratorem(zadzwoń
IsInRole(WindowsBuiltInRole.Administrator)
do wątkuCurrentPrincipal
).źródło
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
jako dobrzeIsInRole
mówi Anders.Szczegółowe kroki są następujące.
Zauważ, że używając tego kodu musisz wyłączyć ustawienia bezpieczeństwa ClickOnce, w tym celu przejdź do Właściwości -> Bezpieczeństwo -> Bezpieczeństwo ClickOnce
źródło
New Item...
nie jest opcją w moim projekcie usługi instalatora. Jak mogę przejść do dodawania manifestu aplikacji? Mogę dodać go do mojego głównego projektu, ale nie jest to instalator.Zaimplementowałem trochę kodu, aby zrobić to ręcznie:
źródło
Możesz osadzić plik manifestu w pliku EXE, co spowoduje, że system Windows (7 lub nowszy) będzie zawsze uruchamiał program jako administrator.
Więcej informacji można znaleźć w kroku 6: Tworzenie i osadzanie manifestu aplikacji (UAC) (MSDN).
źródło
Podczas pracy nad programem Visual Studio 2008 kliknij prawym przyciskiem myszy,
Project -> Add New Item
a następnie wybierzApplication Manifest File
.W pliku manifestu znajdziesz znacznik
requestedExecutionLevel
i możesz ustawić poziom na trzy wartości:<requestedExecutionLevel level="asInvoker" uiAccess="false" />
LUB
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
LUB
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Aby ustawić aplikację do uruchamiania jako administrator, musisz wybrać środkową.
źródło
Zgodnie z
będziesz chciał dodać manifest aplikacji, jeśli jeszcze go nie masz lub nie wiesz, jak go dodać. Ponieważ niektóre projekty nie dodają automatycznie osobnego pliku manifestu, najpierw przejdź do właściwości projektu, przejdź do karty Aplikacja i sprawdź, czy projekt nie wyklucza manifestu na dole kranu.
źródło
W Visual Studio 2010 kliknij prawym przyciskiem myszy nazwę swojego projektu. Naciśnij „Wyświetl ustawienia systemu Windows”, to wygeneruje i otworzy plik o nazwie „app.manifest”. W tym pliku zamień „asInvoker” na „wymaganyAdministrator”, jak wyjaśniono w komentarzach w pliku.
źródło
Innym sposobem na zrobienie tego, tylko w kodzie, jest wykrycie, czy proces działa jako administrator, jak w odpowiedzi @NG. . A następnie otwórz aplikację ponownie i zamknij bieżącą.
Używam tego kodu, gdy aplikacja potrzebuje tylko uprawnień administratora, gdy jest uruchamiana pod pewnymi warunkami, na przykład podczas instalowania się jako usługa. Nie musi więc cały czas działać jako administrator, tak jak wymuszają to inne odpowiedzi.
Uwaga w poniższym kodzie
NeedsToRunAsAdmin
to metoda wykrywająca, czy w obecnych warunkach wymagane są uprawnienia administratora. Jeśli to zwróci,false
kod się nie podniesie. Jest to główna zaleta tego podejścia w porównaniu z innymi.Chociaż ten kod ma wyżej wymienione zalety, musi zostać ponownie uruchomiony jako nowy proces, który nie zawsze jest tym, czego chcesz.
źródło
runas
kontrolę konta użytkownika, aby mieć możliwość uruchomienia czegokolwiek jako administrator od użytkownika niebędącego administratorem, w przeciwnym razie otworzy się cicho z bieżącymi uprawnieniami użytkownika (zaznaczone w systemie Windows 7 64-bitowym). O ile mogę powiedzieć, jedyne, co możesz zrobić z wyłączonym UAC i brak prawa administratora, to zatrzymać wykonywanie w odpowiednim momencie.Możesz utworzyć manifest za pomocą ustawień zabezpieczeń ClickOnce, a następnie wyłączyć go:
Po kliknięciu zostanie utworzony plik w folderze właściwości projektu o nazwie app.manifest. Po jego utworzeniu możesz odznaczyć
Enable ClickOnce Security Settings
opcjęOtwórz ten plik i zmień ten wiersz:
do:
Spowoduje to, że program będzie wymagał uprawnień administratora.
źródło
To jest uproszczona wersja tej odpowiedzi , powyżej autorstwa @NG
źródło
Kliknij plik wykonywalny prawym przyciskiem myszy, przejdź do Właściwości> Zgodność i zaznacz pole „Uruchom ten program jako administrator”.
Jeśli chcesz uruchomić go jako administrator dla wszystkich użytkowników, zrób to samo w „zmień ustawienia dla wszystkich użytkowników”.
źródło