簡體   English   中英

如何使 Delphi 控制面板小程序成為非“舊版”?

[英]How do I make a Delphi control panel applet be non-'legacy'?

我有一個 Delphi.CPL,目前用 Delphi 7 編寫,需要更新 HKLM 中的設置(供服務應用程序使用),並且必須支持 Vista、Win7 和 Server 2008。目前這可以通過向 AppCompatFlags 添加 RUNASADMIN 值來完成/Layers,使用 CPL 文件作為值名稱。 這會導致 Windows 要求提升“舊版控制面板小程序”。

我需要找到一種在 Delphi 2010 中構建 CPL 的方法,而它看起來不是“舊版”,並且如果可能的話,不需要注冊表設置或提升。 將通常的清單資源添加到引用 Common-Controls v6 和“requireAdministrator”的 DLL/CPL 並不能解決問題:沒有請求提升並且 HKLM 訪問失敗。 原始和 Delphi 2010.CPL 都可以通過導航到 SYSWOW64 中的文件、右鍵單擊並以“管理員身份”運行來正確運行(提升后)。

稍后:我在此處發布的論壇中找到了關於為什么不能以這種方式提升 DLL 的簡潔解釋。

我相信你需要使用COM海拔。 有一篇關於此的精彩博客帖子似乎已被刪除, 但帖子背后的源代碼仍然 可以 在 VCL 組件網站上找到(回程機器鏈接)。

可以在以下問題/答案中找到一些附加信息: Delphi:在需要時提示 UAC 提升

我想我已經為我的問題找到了更好的答案。 有一個像“非傳統”控制面板小程序這樣的動物,在 MSDN here中有描述。 “現在,在 Windows Vista 中,您可以通過為您的小程序創建一個可執行文件並注冊它來將您自己的小程序添加到控制面板,而不是通過創建 .cpl 文件的麻煩。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM