web-dev-qa-db-fra.com

Empêcher l'altitude (UAC) pour une application qui n'en a pas besoin

Ayant récemment migré de Vista 32 bits vers Windows 7 64 bits, l'un de mes programmes nécessite désormais des droits d'administrateur.

J'utilise un éditeur de texte plutôt exotique (Crimson Editor). Bien que non conçu pour Vist/Win7, il fonctionnait bien avec Vista. Mais sous Windows 7, l’exécutable du programme obtient ce bouclier UAC ajouté à son icône (même si le drapeau "Exécuter en tant qu’administrateur" dans l’onglet de compatibilité est pas défini) et demande une élévation à chaque fois que je le lance.

Comment Win7 détermine-t-il que cette application du type bloc-notes a besoin de droits d'administrateur? Comment puis-je remplacer cette fausse heuristique?

34
SealedSun

Non, la raison pour laquelle Crimson Editor le fait n'est PAS parce qu'il n'est pas signé. (Et ce n'est pas nouveau pour Win7). C'est parce que le manifeste de l'application, qui est incorporé au moment de la compilation, spécifie requestedPrivilegeLevel="highestLevel".

Selon cet article du forum , les développeurs de Crimson Editor ont changé cela dans la révision 237-241. Ils l'ont fait parce que la fonctionnalité "Ajouter Crimson Editor aux menus contextuels du shell" nécessite des privilèges d'administrateur.

La solution à long terme serait que les développeurs de Crimson Editor corrigent leur manifeste d'application. Ils doivent s'ajouter eux-mêmes aux menus contextuels du shell lors de l'installation ou au moins dire aux utilisateurs qu'ils doivent exécuter manuellement l'application avec privilèges (ce qui est facile à faire) au lieu de l'exiger.

Pour toutes les applications avec requestedPrivilegeLevel="highestLevel" dans leur manifeste (utilisez Vue du manifeste pour afficher les manifestes d'application), vous pouvez utiliser le Application Compatibility Toolkit de Microsoft pour caler l'application avec le correctif RunAsInvoker, ce qui force l'application à exécuter avec vos jetons d'utilisateur standard.

Pour plus d'informations sur l'utilisation d'Application Compatibility Toolkit, voir cet article à propos de son application à Crimson Editor, ou instructions générales .

22
the.d.stro

J'ai trouvé que j'avais deux applications qui avaient ce problème. L'un avait "update" dans le nom du fichier et l'autre "update" dans la "FileDecsription". J'ai simplement supprimé le mot "mise à jour" de ces deux applications et plus aucun avertissement UAC. J'ai trouvé les informations sous "Fonctionnement du contrôle de compte d'utilisateur" - "Détection de l'installateur" à l'adresse:

http://msdn.Microsoft.com/en-us/library/aa905330.aspx

Qui dit ce qui suit:

La détection des installateurs ne concerne que:

  • Exécutables 32 bits
  • Applications sans requiredExecutionLevel
  • Processus interactifs exécutés en tant qu'utilisateur standard avec le contrôle de compte d'utilisateur activé

Avant la création d'un processus 32 bits, les attributs suivants sont vérifiés pour déterminer s'il s'agit d'un programme d'installation:

  • Le nom de fichier inclut des mots clés tels que "installer", "installer" et "mettre à jour".
  • Mots-clés dans les champs de ressources de contrôle de version suivants: fournisseur, nom de société, nom de produit, description de fichier, nom de fichier d'origine, nom interne et nom d'exportation.
  • Mots-clés dans le manifeste de l'application côte à côte intégré à l'exécutable.
  • Mots-clés dans des entrées StringTable spécifiques liées dans l'exécutable.
  • Attributs de clé dans les données du fichier de ressources liées dans l'exécutable.
  • Séquences d'octets ciblées dans l'exécutable.

  • Remarque: les mots-clés et les séquences d'octets ont été dérivés de caractéristiques communes observées à partir de différentes technologies d'installation.

13
TheBeauty

Si vous avez Visual Studio, vous pouvez effectuer les opérations suivantes:

  1. Ouvrez Visual Studio en tant qu'administrateur.
  2. Appuyez sur Ctrl-O pour ouvrir un fichier.
  3. Accédez au dossier contenant Crimson Editor et ouvrez cedt.exe.
  4. Le fichier est ouvert à l'aide de l'éditeur de ressources et vous verrez apparaître une arborescence avec une branche nommée RT_MANIFEST, développez-la et double-cliquez sur l'entrée unique nommée "1 [English United States]".
  5. A peu près aux trois quarts de la colonne de droite, on trouvera légalement ParamètresExpoundLevel = = niveau le plus élevé disponible, remplacez "niveau le plus élevé" par "asInvoker" (notez que l'éditeur s'ouvre par défaut en mode de surimpression.
  6. Enregistrez le fichier et vous avez terminé.

HTH

Kevan

7
kevanb

Vous trouverez des informations sur les heuristiques ici: http://msdn.Microsoft.com/en-us/library/aa905330.aspx

Un manifeste peut aider à contrôler certaines de ces choses.

4
AaronLS