2008-09-18 9 views
3

Je viens de construire un programme VS C++ 6.0 en utilisant VS 2008. Lorsque je tente d'exécuter ou de déboguer l'application, Vista demande la permission. Qu'est-ce qui explique la façon dont le programme est construit? Le programme est en cours de construction et exécuté à partir d'un sous-dossier de C: \ DevPourquoi mon programme demande-t-il l'autorisation de s'exécuter sous Vista?

This response n'a pas de sens pour moi comme une solution au problème.

+0

Exécutez-vous VS en tant qu'administrateur? Je crois que c'est nécessaire – rjrapson

+0

Je pensais mais peut-être tort que VS 2008 SP1 a résolu ce problème et vous demandera la permission lors du chargement. – typemismatch

+0

Oui, je cours en tant qu'administrateur. VS 2005 était le problème. Passage aux choses fixes de 2008. – AlanKley

Répondre

3

Possibilité 1:

Votre programme est marqué comme ayant besoin des droits d'administrateur dans son manifeste

Possibilité 2:

Votre programme est appelé setup.exe ou install.exe - les noms de programme toujours la cause droits d'administrateur à exiger

Pour une explication détaillée de ces possibilités et d'autres, veuillez consulter cette vérification Getting to Know User Account Control Technet article

1

Le MVP parlait de faire exécuter votre code et votre projet à partir de votre dossier utilisateur, par exemple c: \ users \ yourname \ appdata ou quelque chose sous ce chemin. Ne pas désactiver UAC pour résoudre ce problème, sinon votre application ne fonctionnera pas sur une autre machine à moins que le UAC ne soit désactivé. C'est une très mauvaise pratique. Votre application, dans un monde parfait, doit demander des autorisations élevées à l'utilisateur.

0

Si vous n'êtes pas un administrateur, vous n'avez probablement pas l'autorisation d'exécuter des programmes dans C: \ Dev.

1

Merci Suma. Votre réponse est la meilleure 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 quelque chose ne contenant pas le mot 'setup' n'a pas aidé

Il s'est avéré que je me suis trompé.J'ai VS 2005 et VS 2008 installés et quand j'ai essayé d'ouvrir l'ancien fichier .dsw, c'était 2005 2005 a apparemment créé un manifeste avec une seule ligne avec la balise "assembly" Une fois que j'ai mis à jour le projet en utilisant VS 2008, un fichier manifeste plus complet a été créé et j'ai confirmé que le manifeste était incorporé dans . mon programme en cochant l'outil Manifest ... entrée et sortie ... Intégrer un 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>