Jak wymusić uruchomienie aplikacji w trybie administratora?

Jak wymusić uruchomienie aplikacji w trybie administratora?

Na szybko

Do pliku manifestu (stwórz, jeśli nie masz) wpisz taki kod:

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

Po kolei

Wstęp

Czasem zachodzi potrzeba, żeby aplikacja była uruchamiana tylko w trybie administratora. Musi mieć podniesione uprawnienia, żeby na przykład móc utworzyć lub usuwać pliki w katalogu ProgramFiles albo robić inne operacje, które są niedozwolone dla zwykłego użytkownika. Każdą aplikację desktopową można ustawić tak, żeby była uruchamiana tylko w trybie admina. Co więcej, robi się to dokładnie tak samo niezależnie od technologii. Ważne, żeby aplikacja pracowała pod Windowsem.

Manifest

Manifest to specjalny plik XML (w .NET), który opisuje pewne metadane naszej aplikacji. Ten plik zazwyczaj znajduje się w katalogu z kodem i ma rozszerzenie .manifest, np: moja-aplikacja.exe.manifest (możesz mieć kilka plików z takim rozszerzeniem). Ale UWAGA! Plik manifestu nie jest tworzony automatycznie, więc jeśli go nie masz, musisz stworzyć go samemu.

Tworzenie manifestu

  1. W VisualStudio kliknij prawym klawiszem na swój projekt i wybierz Add -> New Item
Tworzenie nowego pliku
  1. W okienku SEARCH zacznij wpisywać „manifest”
Tworzenie manifestu
  1. Powinieneś na liście zobaczyć element „Application Manifest File (Windows only)”. Dodaj go.
  2. Zobaczysz domyślny manifest aplikacji.
  3. Następnie przejdź do właściwości projektu i na karcie Application sprawdź, czy aplikacja będzie budowana z tym właśnie manifestem.
Dodawanie manifestu do aplikacji

I wreszcie… uruchamianie jako admin

Musisz teraz tylko zrobić małą zmianę w pliku manifestu. W sekcji trustInfo->security->requestedPrivileges powinieneś zobaczyć taki wpis:

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

teraz wystarczy, że zmienisz to na:

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

zbudujesz aplikację i gotowe.

Ostatecznie plik manifestu u mnie po usunięciu komentarzy wygląda tak:

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>

    </application>
  </compatibility>
</assembly>

Manifest aplikacji staje się jej zasobem. Od tej pory aplikacja do uruchomienia będzie wymagała uprawnień administratora i będzie mogła zrobić wszystko to, co może administrator.

Pamiętaj tylko, że to jest bardzo specyficzne wymaganie np. dla instalatorów lub pewnych programów narzędziowych. Więc zanim je wdrożysz, zastanów się dobrze, czy to dobre i jedyne wyjście.

UWAGA! Aby debugować taką aplikację, musisz uruchomić Visual Studio w trybie administratora. W przeciwnym razie VS nie będzie mógł jej uruchomić.

Podziel się artykułem na: