2009-10-23 62 views
3

我有一个Delphi .CPL,目前用Delphi 7编写,需要更新HKLM中的设置(供服务应用程序使用),它必须支持Vista,Win7和Server 2008.目前可以通过添加RUNASADMIN值到AppCompatFlags/Layers,使用CPL文件作为值名称。这会导致Windows为“传统控制面板小程序”请求提升。如何使德尔福控制面板小程序不是'非礼'?

我需要找到一种方法来构建Delphi 2010中的CPL,而不会显示为“遗留”,并且如果可能的话,不需要注册表设置或提升。将通常的清单资源添加到引用Common-Controls v6和“requireAdministrator”的DLL/CPL中并不能解决问题:不要求提升并且HKLM访问失败。通过导航到SYSWOW64中的文件,右键单击并以“以管理员身份”运行,可以使原始文件和Delphi 2010 .CPL正确运行(提升后)。

后来:我找到了一个解释为什么你不能在论坛张贴here这样提升DLL。

回答

1

我想我已经找到了更好的答案来解决我的问题。有这样的动物,如“非传统”控制面板小程序,它在MSDN here中描述。 “现在,在Windows Vista中,您可以通过为您的小程序创建可执行文件并注册它,而不是经历创建.cpl文件的麻烦,将自己的小程序添加到控制面板。”

2

我相信你需要使用COM标高。这篇文章发表了一篇精彩的博文,似乎已被删除,但发布后的源代码仍然是available,在VCL组件website上。

+0

谢谢,我认为解决方案可以工作,如果我决定这样做,代码将会很有用。但放弃使用CPL的想法可能会更简单,只需使用可升级的常规EXE进行服务管理即可。 – frogb 2009-10-23 18:12:34

+0

无论使用哪种方式,您都可以使用上述COM提升方法来提升自己“及时”以应用您的HKLM注册表更改。 – skamradt 2009-10-23 20:38:51