2010-03-05 11 views
1

Dans une application Delphi destinée à construire un service de mise à jour logicielle Internet pour mon logiciel, le système UAC Windows 7 demande l'autorisation de l'utilisateur d'exécuter le exe.The suivant possibles domaines litigieux/risque existe dans le code:Comment déterminer ce qui appelle les restrictions de contrôle d'accès utilisateur?

  • Un serveur de canal nommé est créé pour les communications
  • TCP est utilisé pour FTP et HTTP
  • SHGetSpecialFolderPath appel api est utilisé

Avant ces éléments ajoutés où l'UAC n'a pas activé, la suppression dans chaque t urn y compris toute référence de l'unité, puis se terminant par les os nus exe provoque toujours l'événement UAC - il n'est donc pas possible de dire ce qui le cause. En plus de cela, Delphi 2007 nécessite maintenant d'être lancé en tant qu'administrateur pour lancer un processus de débogage pour l'application.

Question 1: Comment puis-je voir ce qui cause ce en plus à partir de zéro dans une nouvelle exe - OIEau est là quelque part un journal que je peux vérifier

Question 2: Est-ce que l'aide d'un exe signé en utilisant authenticode causer encore la Alerte UAC pour afficher

Répondre

7

UAC ne démarre pas car votre application fait quelque chose d'administratif. Beaucoup de gens croient que quand une application qui n'est pas élevée essaye de faire [quelque chose qui échouera non élevé et réussira élevé], l'UAC demande d'élever. Mais ce n'est pas le cas. Votre application commence à être élevée ou non, et reste ainsi. Si elle essaie de faire quelque chose qui échoue sans élévation, alors la chose échoue. C'est pourquoi l'ajout et la suppression de code "provoque toujours l'événement UAC".

Ce qui "provoque réellement l'événement UAC" est une propriété de votre exe autre que le code qu'il contient. Ceux-ci incluent son nom, les éléments de compatibilité que vous lui avez appliqués délibérément (en cliquant avec le bouton droit et en vérifiant certaines options) et la compatibilité que le système a appliquée pour vous (souvent après l'une de ces boîtes de dialogue. Les gens trouvent souvent très frustrant de déterminer lequel est à l'origine de ce problème

Commencez par renommer l'exe, en évitant les mots comme setup et update, vous n'avez pas besoin de l'exécuter, btw l'icône dans l'explorateur de Windows. (voir http://www.gregcons.com/KateBlog/NamingMattersAnotherCauseOfTheOverlayIcon.aspx) cliquez également droit et choisissez Propriétés, puis regardez l'onglet Compatibilité. vous pouvez le demander à élever là.

+0

Ceci est correct - il y a quelques heuristiques à l'œuvre. Plus de détails ici http://msdn.microsoft.com/fr-fr/magazine/cc163486.aspx – MX4399

+1

J'aurais dû préciser que si vous avez un manifeste avec asInvoker, les heuristiques sont supprimées. Bon point Alexandre. –

3

Je pense que vous posez la mauvaise question.

Vous n'avez pas besoin de combattre l'UAC et ses heuristiques. Ils sont des hacks de compatibilité pour les anciennes applications, pas nouveau. Les nouvelles applications doivent simplement suivre les règles.

Inclure manifest with "asInvoker" execution level - et vous avez terminé. Simple et 100% efficace.