2010-07-05 7 views
5

J'ai une application VB6 que je vends depuis plus de 12 ans. Parfois, j'ai des utilisateurs qui ont du mal à faire fonctionner l'application. Les écritures de données vont dans/Mes documents si rien mais les fichiers d'installation (EXE, etc.) vont dans C: \ Program Files (ou C: \ Program Files (x86)).Empêcher la virtualisation UAC?

La solution à leur problème est de démarrer l'application, même si elle apparaît bloquée, puis afficher le gestionnaire de tâches, afficher les processus, cliquez-droit sur le processus de mon application et décochez UAC Virtualization. Ensuite, je les ai réparer l'installation et tout va bien.

Pourquoi mon processus est-il soumis à la virtualisation UAC et comment puis-je l'éviter? J'utilise également InstallShield 2010 Professional pour créer l'installation, je ne sais pas si c'est lié à l'installateur ou l'application elle-même.

Répondre

9

Pour empêcher la virtualisation, ajoutez un manifeste à l'application. Que vous disiez asInvoker ou requireAdministrator, vous n'obtiendrez plus de virtualisation. Je devine qu'Invoker sera meilleur pour toi puisque l'application fonctionne bien sans élévation.

Vous pouvez simplement placer foo.exe.manifest dans le même dossier que l'exe, ou l'incorporer, ce qui a des trucs compliqués comme faire du manifeste un multiple de 4 octets. This question couvre quelques détails sanglants de l'intégration.

+0

Merci pour l'information. Des liens vers la façon de créer ce manifeste? – Neal

+1

Dans sa forme la plus simple, il s'agit simplement d'un fichier XML nommé yourexename.exe.manifest et placé dans le même dossier que yourexename.exe. Pour un exemple du contenu, voir http://csi-windows.com/toolkit/manifest-template parmi d'autres. La partie 'requestedPrivileges' est l'aspect important. –