J'ai besoin que mon logiciel puisse fonctionner en tant qu'administrateur sous Windows Vista (si quelqu'un l'exécute sans autorisations administratives, il se bloque).
Lors du lancement d'un autre logiciel, j'ai vu une invite du système telle que "ce logiciel sera exécuté en tant qu'administrateur. Voulez-vous continuer?" lorsque l'application tentait d'acquérir des privilèges administratifs.
Comment demander des privilèges administratifs lors de l'exécution d'une application c # sous Windows Vista?
Ajoutez les éléments suivants à votre fichier manifeste:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Vous pouvez également utiliser highestAvailable
pour le niveau.
Regardez ici pour incorporer des fichiers manifeste:
http://msdn.Microsoft.com/en-us/library/bb756929.aspx
PS: Si vous n'avez pas de fichier manifeste, vous pouvez facilement en ajouter un nouveau:
Dans Visual Studio, cliquez avec le bouton droit sur projet -> Ajouter un élément -> Choisir le fichier manifeste de l'application (sous Général pour les éléments Visual C #).
Le fichier ajouté aura déjà la partie ci-dessus, il suffit de changer le niveau en requireAdministrator
à partir de asInvoker
Placez ce fichier XML dans un fichier nommé yourexename.exe.manifest:
<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>
Vous devez utiliser le jeton requestedExecutionLevel
dans un manifeste:
Pour F # Visual Studio 2013, y compris un fichier manifeste qui demande l'élévation d'administrateur à l'aide du compilateur FSharp /win32manifest
Le drapeau suivant a fonctionné pour moi. Donc, étant donné une sortie de projet nommée "App.Exe"
Créez un fichier avec le contenu suivant (pour plus de commodité, vous pouvez ajouter le fichier au projet. Assurez-vous que c'est Build Action
est None' and
Copier dans la sortie ...is
Ne pas copier. By convention such a file is named
App.Exe.manifest`. Si vous avez besoin de uiAccess (interface utilisateur), l’assemblage doit avoir un nom fort.
<?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>
Editez le panneau de construction du dialogue de projet Other flags:
Le champ d’entrée comprend les éléments suivants: /win32manifest:<ApplicationManifestFile>
. Par exemple, dans ce cas, /win32manifest:App.Exe.manifest
.