L'ajout de manifester pour les droits admin demande
J'ai une application qui écrit les paramètres du programme dans le registre windows qui est absolument nécessaire pour.stocker dans un fichier n'est pas une option.
Pour simplifier, je voudrais donner une "privilèges administrateur" écran de rappel au lieu d'essayer d'expliquer comment faire un clic droit sur le fichier de programme/coupe courte.
J'ai trouvé un bon article, mais je recevoir une double erreur de ressource après l'ajout de mon propre fichier de ressources pour le manifeste.
C'est soi-disant en raison d'un conflit avec l'intérieur de manifester et de résoudre le problème, je vois beaucoup de commentaires suggérant "activer l'exécution de thèmes" à être désactivé dans les options de projet. Je suis passé par tous les menu, mais ne peut pas le trouver, et je ai été dit qu'il peut ne pas être disponible dans Delphi 7 et a été introduit dans les versions ultérieures.
Comment puis-je ajouter mes propres manifeste?
- L'écriture de paramètres de programme pour le registre n'est pas une raison valable à donner votre demande de privilèges d'administrateur! c'est une très mauvaise idée.
- On ne me demande pourquoi vous ne faites pas ce que tous les autres développeurs et écrire les paramètres du programme à l'emplacement correct.
- Je suis en train d'écrire à Hkey actuelle de l'utilisateur qui d'après ce que j'ai lu, il doit être accessible en écriture sans admin.
- Écrit à HKCU ne nécessite pas les droits admin. alors, pourquoi ne besoin d'être un? Vous devez toujours inclure un contrôle de compte d'utilisateur manifeste, mais avec
level="asInvoker"
qui probablement ne change pas votre problème avec la dup de la ressource. - Correct. Ceci, comme vous pouvez sans doute dire, c'est mon premier manifeste tentative. La raison pour laquelle je vais pour l'administration est parce que je sais que ça fonctionne. Une fois que j'ai quelque chose à travailler, j'ai peut alors se concentrer sur le manifeste et les différents niveaux et d'obtenir de bien ajustée.
Vous devez vous connecter pour publier un commentaire.
Dans les plus récentes versions de Delphi, ce n'est plus nécessaire.
En vertu de Options du Projet, puis Application, il y a une section pour le manifeste:
Capture d'écran de la version 10.2.1 Tokyo
Cela prend automatiquement soin de l'XP manifeste mentionné comme un avertissement à la botom de Kobik réponse.
Je ne sais pas à partir de laquelle Delphi version de ce qui était disponible.
(Gratuit libre de modifier cette réponse si vous la connaissez).
(Edit Ian Murphy Février 2019: Il n'est pas disponible dans XE2)
J'ai déjà commenté que "l'Écriture de paramètres de programme pour le registre n'est pas une raison valable à donner votre demande de privilèges d'administrateur". Cependant c'est une bonne idée d'inclure un contrôle de compte d'utilisateur manifeste dans tous les cas. la commune
requestedExecutionLevel
devrait êtrelevel="asInvoker"
. voir les docsCréer le dessous de 4 fichiers (2 jeux):
(Contrôle de compte d'utilisateur Uniquement)
contrôle de compte d'utilisateur.manifeste
contrôle de compte d'utilisateur.rc
(UAC + les Thèmes XP)
uac_xp.manifeste
uac_xp.rc
Ajouter des
rc
fichier (uac.rc
ouuac_xp.rc
) à votre projet via le Projet "> Ajouter au projet" dans le menu. Cela va créer de l'{$R}
directive dans le fichier de votre projet:Note le
{$R 'uac_xp.res' 'uac_xp.rc'}
. Delphi auto compiler lerc
àres
fichier.Sinon, vous pouvez compiler le
rc
fichier viabrcc32 uac.rc
à l'extérieur de Delphi IDE. puis ajouter{$R 'uac_xp.res'}
manuellement à votre projet.Assurez-vous de ne pas utiliser n'importe quel autre XP manifeste.
{$R 'uac_xp.res' 'uac_xp.rc'}
. Delphi auto compiler lerc
àres
fichier, donc pas besoin de compiler lerc
fichier viabrcc32 uac.rc
. Si vous utilisez{$R 'uac_xp.res'}
seulement ensuite, vous devez compiler lerc
fichier en dehors de Delphi IDE.{$R 'uac_xp.res' 'uac_xp.rc'}
automatique de la compilation?Comment faire pour supprimer le "interne" manifeste à partir de Delphi 7 projet ?
Que interne manifeste était en Delphi 7 fois représentée par le
TXPManifest
composant, dont le seul but était d'ajouter leXPMan.pas
unité à la clause uses de l'unité où il a été abandonné. CetteXPMan.pas
alors inclus le fichier de ressources avec le manifeste lui-même dans un projet de sortie.Donc, pour supprimer cette interne manifeste, vous devez supprimer tous les
TXPManifest
composants de toutes les formes de votre projet (si vous en avez utilisé), ainsi que tous lesXPMan
clause utilise les références de toutes les unités de votre projet.En bref, faire les deux étapes suivantes pour toutes les unités de votre projet (la première étape est facultative si vous n'avez pas utilisé le
TXPManifest
composants, mais la seconde):{$R ResourceFileName.res}
comme avant, dans l'ensemble du projet. Il peut y avoir un, qui comprend le manifeste (le nom du fichier de ressources peut être).