我有一个Delphi.CPL目前是用Delphi7编写的,它需要更新HKLM中的设置(供服务应用程序使用),并且必须支持Vista、Win7和Server2008。目前,这可以通过使用CPL文件作为值名将RUNASADMIN值添加到AppCompatFlgs/Layers来完成。这会导致Windows请求提升“传统控制面板小程序”。
我需要找到一种方法来建立在Delphi 2010中的CPL,而不是它似乎是‘遗产’,如果可能的话,不需要注册表设置或提升。将通常的清单资源添加到引用Common-Controls V6和“Required Administrator”的DLL/CPL中并不能解决问题:没有请求提升,HKLM访问失败。通过在SYSWOW64中导航到该文件,右键单击并以管理员身份运行,可以使原始和Delphi 2010.CPL正确运行(提升后)。
后来:我在一个论坛的here帖子中找到了一个简短的解释,解释了为什么不能以这种方式提升DLL。
2条答案
按热度按时间hpxqektj1#
我认为您需要使用COM Elevation。有一篇精彩的博客文章似乎已经被删除了,但帖子背后的源代码仍然是VCL组件website上的available(很久以前的机器链接)。
有关其他信息,请参阅以下问题/答案:Delphi: Prompt for UAC elevation when needed
gorkyyrv2#
我想我已经找到了我的问题的更好的答案。MSDN here中描述了这样一种动物,即“非传统的”控制面板小程序。现在,在Windows Vista中,您可以通过为您的小程序创建可执行文件并注册它来将您自己的小程序添加到控制面板,而不是费力地创建.cpl文件。