2011-02-23 1 views
21

Quelles sont les raisons possibles pour obtenir la boîte de dialogue Assistant de compatibilité de programme après la fermeture de l'application?Raisons de l'obtention de la boîte de dialogue Programme Compatibility Assistant

Program Compatibility Assistant image http://i.msdn.microsoft.com/dynimg/IC5958.gif

EDIT: Program Compatibility Assistant: frequently asked questions

Je me rends compte que cette question a déjà été posée sur S.O.

Cependant, mon application:

  1. ne reçoit que PCA après sa fermeture
  2. ne tente pas de faire tout ce qui requiert des privilèges élevés (je ne pense pas)
  3. ne soit pas PCA lorsqu'il est exécuté à partir de l'IDE
  4. est pas un programme d'installation/configuration
  5. n'a pas « installer » ou « setup » dans le nom du programme
  6. ne jette pas une exception quand il se ferme, ou la sortie d'un code autre que 0 (je ne pense pas)
  7. ne soit pas PCA si j'ajoute <compatibility> noeud à manifeste d'application

Note n ° 6, avec la app.manifest suivante, je ne reçois plus l'APC:

<?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="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
     <!--The ID below indicates application support for Windows Vista --> 
     <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
     <!--The ID below indicates application support for Windows 7 --> 
     <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
    </application> 
    </compatibility> 
</asmv1:assembly> 

Alors que la deuxième partie semble fixer, mais je suis inquiet que ma demande est toujours faire quelque chose que je ne connais pas.

Pour être clair, je pose une question 2 partie:

  1. Quels problèmes peuvent faire apparaître la boîte de dialogue PCA?
  2. Le noeud <compatibility> est-il absolument nécessaire afin d'éviter le dialogue PCA? Ou pourrais-je encore faire quelque chose de mal?
+0

+1. Bonne question, mais l'image d'imgur est partie. – gary

Répondre

9

This MSDN article décrit les nombreuses conditions qui peuvent causer l'assistant de compatibilité des programmes pour lancer. Je voudrais examiner l'ensemble des scénarios qu'il décrit et voir si aucun d'entre eux appliquent à votre programme. Je vois des causes pour les boîtes de dialogue PCA en dehors des conditions que vous avez exclues (par exemple, en essayant de créer un nouveau dossier sous %ProgramFiles%).

Questions connexes