У меня есть Delphi .CPL, в настоящее время написанный на Delphi 7, который должен обновлять настройки в HKLM (для использования сервисным приложением) и который должен поддерживать Vista, Win7 и Server 2008. В настоящее время это можно сделать, добавив RUNASADMIN. значение для AppCompatFlags / Layers, используя файл CPL в качестве имени значения. Это заставляет Windows запрашивать повышение прав для «устаревшего апплета панели управления».
Мне нужно найти способ построения CPL в Delphi 2010, чтобы он не выглядел как «устаревший» и, по возможности, не требовал настройки реестра или повышения прав. Добавление обычного ресурса манифеста в DLL / CPL, ссылающегося на Common-Controls v6 и «requireAdministrator», не решает проблему: повышение прав не запрашивается, и доступ HKLM завершается неудачно. Как исходный файл, так и Delphi 2010 .CPL можно заставить работать правильно (после повышения прав), перейдя к файлу в SYSWOW64, щелкнув правой кнопкой мыши и запустив «от имени администратора».
Позже: я нашел краткое объяснение того, почему вы не можете поднять DLL таким образом в сообщении на форуме здесь .