2009-10-23 6 views
3

J'ai un Delphi .CPL actuellement écrit avec Delphi 7 qui doit mettre à jour les paramètres dans HKLM (pour être utilisé par une application de service) et qui doit supporter Vista, Win7 et Server 2008. Actuellement cela peut être fait en ajoutant une valeur RUNASADMIN AppCompatFlags/Layers, en utilisant le fichier CPL comme nom de valeur. Cela amène Windows à demander l'élévation d'une «applet de panneau de configuration héritée».Comment faire pour que l'applet du panneau de configuration Delphi ne soit pas "brute"?

Je dois trouver un moyen de construire le CPL dans Delphi 2010 sans qu'il ne semble être «hérité» et, si possible, ne pas exiger le paramètre de registre ou l'élévation. L'ajout de la ressource manifeste habituelle à la DLL/CPL en référençant Common-Controls v6 et "requireAdministrator" ne résout pas le problème: aucune élévation n'est demandée et l'accès HKLM échoue. L'original et le fichier Delphi 2010 .CPL peuvent être exécutés correctement (après élévation) en naviguant vers le fichier dans SYSWOW64, en cliquant avec le bouton droit de la souris et en exécutant "en tant qu'administrateur". Plus tard: J'ai trouvé une explication de succint de pourquoi vous ne pouvez pas élever une DLL de cette manière dans un forum here.

Répondre

1

Je pense avoir trouvé une meilleure réponse à ma question. Il est un tel animal comme une applet de panneau de contrôle «non-héritage», qui est décrite dans MSDN here. "Maintenant, dans Windows Vista, vous pouvez ajouter votre propre applet au Panneau de configuration en créant un exécutable pour votre applet et en l'enregistrant, au lieu de passer par la création d'un fichier .cpl."

2

Je crois que vous devez utiliser l'élévation COM. Il y avait un blog merveilleux posté sur ce qui semble avoir été retiré, mais le code source derrière le poste est toujours available sur les composants VCL website.

+0

Merci, je pense que cette solution fonctionnerait et que le code serait utile si je décidais de le faire de cette façon. Mais il peut être plus simple d'abandonner l'idée d'utiliser un CPL et de simplement faire la gestion de service avec un EXE régulier qui peut être élevé. – frogb

+0

Dans les deux cas, vous pouvez utiliser la méthode d'élévation COM mentionnée ci-dessus pour vous élever «juste à temps» afin d'appliquer vos modifications de registre HKLM. – skamradt

Questions connexes