it-swarm.com.de

Wie fordere ich Administratorrechte an, wenn das Programm gestartet wird?

Ich benötige meine Software, um als Administrator unter Windows Vista ausgeführt werden zu können (wenn jemand sie ohne Administratorrechte ausführt, stürzt sie ab).

Beim Starten einer anderen Software wurde vom System eine Eingabeaufforderung angezeigt, z. B. "Diese Software wird als Administrator ausgeführt. Möchten Sie fortfahren?" Als die App versuchte, Administratorrechte zu erlangen.

Wie fordere ich Administratorrechte an, wenn ich eine C # -App unter Windows Vista ausführe?

70
Arsen Zahray

Fügen Sie Ihrer Manifestdatei Folgendes hinzu:

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

Sie können auch highestAvailable für das Level verwenden.

Informationen zum Einbetten von Manifestdateien finden Sie hier:

http://msdn.Microsoft.com/en-us/library/bb756929.aspx

PS: Wenn Sie keine Manifest-Datei haben, können Sie ganz einfach eine neue hinzufügen:

Klicken Sie in Visual Studio mit der rechten Maustaste auf Projekt -> Element hinzufügen -> Anwendungsmanifestdatei auswählen (unter Allgemein für Visual C # -Elemente).

Die hinzugefügte Datei enthält bereits den obigen Teil. Ändern Sie einfach die Ebene von requireAdministrator auf asInvoker.

123
manojlds

Fügen Sie diese XML-Datei in die Datei yourexename.exe.manifest ein:

<Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0>
<trustInfo xmlns="urn:schemas-Microsoft-com:asm.v3">
   <security>
     <requestedPrivileges>
        <requestedExecutionLevel level="highestAvailable" />
     </requestedPrivileges>
   </security>
</trustInfo>
</Assembly>
12
Steve Danner

Sie müssen das Token requestedExecutionLevel in einem Manifest verwenden:

http://www.developerfusion.com/code/7987/making-a-net-app-run-on-Vista-with-administrator-priviledges/

1
Polynomial

Für F # Visual Studio 2013 funktionierte das folgende Verfahren, einschließlich einer Manifestdatei, die eine Administratorerhöhung mithilfe des /win32manifest - Flags des FSharp-Compilers anfordert. Bei einer Projektausgabe mit dem Namen "App.Exe"

  1. Erstellen Sie eine Datei mit folgendem Inhalt (Sie können die Datei auch dem Projekt hinzufügen. Stellen Sie sicher, dass Build ActionNone' and Als Ausgabe kopieren ...isNicht kopieren . By convention such a file is named App.Exe.manifest`. Wenn Sie uiAccess (Benutzeroberfläche) benötigen, muss die Assembly einen starken Namen haben.

    <?xml version="1.0" encoding="utf-8" ?>
    <asmv1:Assembly manifestVersion="1.0" 
        xmlns="urn:schemas-Microsoft-com:asm.v1"
        xmlns:asmv1="urn:schemas-Microsoft-com:asm.v1"
        xmlns:asmv2="urn:schemas-Microsoft-com:asm.v2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <assemblyIdentity version="1.0.0.0" name="App" />
      <trustInfo xmlns="urn:schemas-Microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-Microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    </asmv1:Assembly>
    
  2. Bearbeiten Sie das Eingabefeld Other flags: Des Erstellungsfensters des Projektdialogs, um Folgendes einzuschließen: /win32manifest:<ApplicationManifestFile>. Zum Beispiel in diesem Fall /win32manifest:App.Exe.manifest.

0
George