2009-10-23 49 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