Pourquoi mon programme demande-t-il l'autorisation de s'exécuter sur Vista?
-
01-07-2019 - |
Question
Je viens de créer un programme VS C ++ 6.0 utilisant VS 2008. Lorsque je tente d'exécuter ou de déboguer l'application, Vista demande une autorisation. Qu'est-ce qui cause ce problème dans la construction du programme? Le programme est créé et exécuté à partir d’un sous-dossier de C: \ Dev
Cette réponse n’avait aucun sens pour moi comme solution au problème.
La solution
Possibilité 1:
Votre programme est marqué comme nécessitant des droits d'administrateur dans son manifeste
Possibilité 2:
Votre programme s'appelle setup.exe ou install.exe - de tels noms de programme imposent toujours des droits d'administrateur.
Pour une explication détaillée de ces possibilités et d'autres raisons, pourquoi vous voyez cette vérification Apprendre à connaître l'article de Technet sur le contrôle de compte d'utilisateur
Autres conseils
Le MVP parlait de faire exécuter votre code et votre projet à partir de votre dossier utilisateur, par exemple c: \ utilisateurs \ votrenom \ appdata ou quelque chose sous ce chemin.
Ne désactivez pas le contrôle de compte d'utilisateur pour résoudre ce problème, sinon votre application ne fonctionnera pas sur un autre ordinateur, à moins que le contrôle de compte d'utilisateur ne soit désactivé. C'est une très mauvaise pratique. Votre application, dans un monde parfait, devrait demander des autorisations élevées à l'utilisateur.
Merci Suma. Votre réponse est la meilleure pour le moment et m'a aidé à trouver une solution. J'ai déterminé que la cause est expliquée par votre première suggestion. Renommer le fichier en un nom ne contenant pas le mot 'setup " n'a pas aidé.
Il s'est avéré que je me suis trompé. VS 2005 et 2008 sont installés et lorsque j'ai essayé d'ouvrir l'ancien fichier .dsw, c'est 2005 qui a été lancé et proposé de mettre à niveau le projet. 2005 a apparemment créé un manifeste avec une seule ligne avec la balise "assembly". Une fois le projet mis à niveau à l’aide de VS 2008, un fichier manifeste plus complet a été créé. J'ai confirmé que le manifeste était en train d'être intégré à mon programme en vérifiant le paramètre Outil de manifeste ... Entrée et sortie ... Intégrer le manifeste. Ce nouveau manifeste comprend les données suivantes:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
Si vous n'êtes pas un administrateur, vous n'êtes probablement pas autorisé à exécuter des programmes dans C: \ Dev.