Mittwoch, 26. Mai 2010

C# Anwendung mit Administratorrechten starten under Windows Vista / 7

In den Windowsversionen Vista und 7 legt die User Account Control (UAC) fest, dass der angemeldete Benutzer, auch wenn er Administrator ist, standardmäßig nicht als Administrator fungiert. Bei Aktionen, die das Betriebssystem beeinträchtigen könnten, wird deshalb der wohl bekannte Dialog "Möchten Sie zulassen, dass durch das folgende Programm Änderungen an diesem Computer vorgenommen werden?" angezeigt.
Für uns bedeutet das, dass Anwendungen, auch wenn sie vom Administrator gestartet werden, standardmäßig nicht als Administrator laufen. Sollen diese Programm dann Code ausführen, der höhere Befugnisse braucht, zeigt die Ausführung keine Wirkung.
Um dem Programm diese höheren Befugnisse zu erteilen, fügen wir ihm in der C# - Entwicklungsumgebung eine Anwendungsmanifestdatei über Projekt - Neues Element hinzufügen - Anwendungsmanifestdatei hinzu.
Der Inhalt dieser sollte ungefähr so aussehen:



Die Zeile < requestedExecutionLevel level="asInvoker" uiaccess="false"> interessiert uns.
Als requestedExecutionLevel kann asInvoker, highestAvailable oder requireAdministrator eingetragen werden.
Mit requireAdministrator erscheint bei Programmstart der bekannte Dialog, nach eimem Klick auf Ja hat die Anwendung volle Administratorrechte.

Um die Anwendung ohne die Manifestdatei mit Administratorrechten auszustatten, siehe diesen Post.

Kommentare:

  1. yep, GENAU das hab ich gesucht^^ :-) thx

    AntwortenLöschen
  2. geht das auch ohne app config ?

    AntwortenLöschen
  3. Ja, mit einem kleinen Trick.
    Ich habe dazu einen neuen Post geschrieben:
    http://csharp-tricks.blogspot.com/2011/05/anwendung-mit-administratorrechten-neu.html

    AntwortenLöschen
  4. Großartig! Danke, hat mir weitergeholfen! =)

    AntwortenLöschen