pendant un moment maintenant, le programme d'installation de mon programme a utilisé le code ci-dessous pour faire fonctionner mon application avec des privilèges administratifs. Mais il semble avoir aucun effet sous Windows 7. À Vista, cela fonctionnait magnifiquement. Si je cliquez avec le bouton droit de la souris sur le raccourci et indiquez-lui de fonctionner en tant qu'administration, le programme va bien commencer. Mais en utilisant ci-dessous, le code doit être effectué pour exécuter le programme de la manière tout le temps. Ça ne fait plus. Est-ce que quelqu'un sait si Win 7 utilise toujours cette clé? UAC est également sur le chemin. Merci. P> P>
5 Réponses :
J'utilise Windows 7 et je peux voir de telles clés. Cependant, je ne pense pas que ce soit une bonne façon de configurer votre application et votre installateur. P>
Ma recommandation est que vous distribuez un fichier manifeste avec votre application (app.exe). Le fichier manifeste peut être même intégré dans l'exécutable si vous utilisez Visual Studio 2008. Ensuite, dans le fichier manifeste, vous pouvez avoir besoin de droits d'administrateur. P>
http://msdn.microsoft.com/en-us/library/ BB756929.aspx P>
http://blogs.msdn.com/shawnfa/ Archives / 2006/04/06/568563.aspx P>
Merci lextm. Je ne savais pas qu'un fichier manifeste pourrait être fait pour les fichiers EXE que je n'ai pas créé. Ou qu'ils ne devaient pas être intégrés non plus. Merci pour les liens.
@Jimdel: Tous ces liens semblent se rapporter à l'intégration du manifeste. Où avez-vous vu comment je le ferais "pour les fichiers exe que je n'ai pas créés?"
dans Win7, runasadmin code> est placé dans la touche:
Lorsque
HKLM \\ Software \\ Microsoft \\ Windows NT \\ CurrentVersion \\ AppCompCatFlags \\ Calques Code> Utilisation de l'installation Bouclier 5.1, les valeurs sont copiées sur le
appcpmctflgsin wow6432node code> et < Code> EXE CODE> Actualy Falis fonctionne comme administrateur. P>
Cette réponse de Roben travaille "pour un fichier EXE que je n'ai pas créé," que vous avez exprimé comme un intérêt Dans votre commentaire sur La réponse de Lex Li . Il utilise votre idée de registre d'origine. P>
Deux différences éventuellement pertinentes: P>
wow6432node code> ( une préoccupation mentionnée par " USS ") LI>
- en utilisant
hklm code> au lieu de hkcu code>, je n'ai pas besoin de ne pas vous inquiéter de quel utilisateur exécute l'application ( Une préoccupation mentionnée par Léo ). Li>
ol>
J'ai une réponse / solution de contournement pour cette question.
Tout d'abord, je suis en désaccord (respectueusement) avec le commentaire selon lequel l'utilisation de l'appelcCompatFlags n'est pas un «moyen approprié de configurer votre application et votre installateur». La modification de cette section du registre se reflète simplement à l'aide de l'interface graphique Windows pour modifier le niveau de privilège de l'exécutable. Je trouve que cette méthode est plus facile à mettre en œuvre que d'ajouter un fichier manifeste. Si l'utilisateur souhaite ou doit modifier le niveau de privilège pour ne pas exécuter en tant qu'administrateur, ils peuvent le faire facilement avec l'interface graphique. P>
Quoi qu'il en soit, j'ai eu le même problème d'essayer de définir le niveau de privilège de l'exécutable pour exécuter en tant qu'administrateur. Nous savons que nous pouvons la définir avec l'interface graphique: p>
Lorsque les modifications sont enregistrées, vous trouverez le paramètre dans le registre: p> lorsque je définit le Cependant, chaque fois que j'ai essayé de changer le registre directement sans passer par l'interface graphique, le programme ne fonctionnera tout simplement pas en tant qu'administrateur. Le registre montre que j'ai effectué le changement et lorsque je regarde le niveau de privilège pour l'exécutable, exécuter en tant qu'administrateur est vérifié comme sur. P> J'ai essayé plusieurs façons différentes de faire le Toutes ces méthodes ont fait la même chose. Le registre a été modifié et l'interface graphique a montré que ce programme devrait exécuter en tant qu'administrateur, mais le programme ne fonctionne jamais en tant qu'administrateur. P> Le correctif que pour ce problème, je suis tombé sur le point d'aller de l'avant et de changer à la fois la touche Si vous modifiez ces deux sections de registre, le Je ne sais pas ce qui se passe ici, mais cela fonctionne. P> P> .exe code>. Pour exécuter en tant qu'administrator en utilisant l'interface graphique de cette façon, cela fonctionne toujours. P>
. X / Code> Exécuter en tant qu'administrateur en modifiant simplement le registre: p>
.reg code> fichier li>
HKCU code> et la touche
hklm code> avec le réglage. p>
.exe code> sera exécuté en tant qu'administrateur. Plus important encore, si un utilisateur différent se connecte au PC, le programme fonctionnera en tant qu'administrateur. Cela dépit de la modification du registre ne faisant pas partie de la section HKCU pour l'utilisateur ultérieur. P>
J'ai utilisé cmd pour ajouter cette entrée dans le registre à l'aide de la commande suivante:
reg ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /t REG_SZ /f /v "C:\Program Files (x86)\MyApp\myapp.exe" /d RUNASADMIN /reg:64