Ich benötige meine Software, um unter Windows Vista als Administrator ausgeführt werden zu können (wenn jemand sie ohne Administratorrechte ausführt, stürzt sie ab).
Beim Starten anderer Software wurde vom System die Meldung "Diese Software wird als Administrator ausgeführt. Möchten Sie fortfahren?" Angezeigt. als die App versuchte, Administratorrechte zu erwerben.
Wie fordere ich Administratorrechte an, wenn ich eine c # -App unter Windows Vista ausführe?
c#
windows
windows-7
windows-vista
Arsen Zahray
quelle
quelle
Antworten:
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 Manifestdatei haben, können Sie einfach eine neue hinzufügen:
Die hinzugefügte Datei enthält bereits den obigen Teil. Ändern Sie einfach die Ebene in
requireAdministrator
vonasInvoker
quelle
Fügen Sie dieses XML in eine Datei mit dem Namen 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>
quelle
Sie müssen das
requestedExecutionLevel
Token in einem Manifest verwenden:http://www.developerfusion.com/code/7987/making-a-net-app-run-on-vista-with-administrator-priviledges/
quelle
Für F # Visual Studio 2013 hat es
/win32manifest
für mich funktioniert , einschließlich einer Manifestdatei, die eine Administratorerhöhung mithilfe des FSharp-Compiler- Flags wie folgt anfordert . Bei einer Projektausgabe mit dem Namen "App.Exe"Erstellen Sie eine Datei mit dem folgenden Inhalt (zur Vereinfachung können Sie die Datei zum Projekt hinzufügen. Stellen Sie sicher, dass es
Build Action
sichNone' and
um "In Ausgabeis
kopieren". By convention such a file is named
handelt. Kopieren Sie nicht App.Exe.manifest`. Wenn Sie uiAccess (Benutzeroberfläche) benötigen, die Assembly muss stark benannt sein.<?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>
Bearbeiten Sie das
Other flags:
Eingabefeld des Projektdialog-Build-Panels so , dass es Folgendes enthält :/win32manifest:<ApplicationManifestFile>
. Zum Beispiel in diesem Fall/win32manifest:App.Exe.manifest
.quelle