Как сделать апплет панели управления Delphi не легальным? - PullRequest
3 голосов
/ 23 октября 2009

У меня есть 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 таким образом в сообщении на форуме здесь .

Ответы [ 2 ]

2 голосов
/ 23 октября 2009

Я считаю, что вам нужно использовать COM возвышение. Было замечательно опубликовано сообщение об этом в блоге, которое, похоже, было удалено, но исходный код сообщения все еще доступен на компонентах VCL веб-сайт .

1 голос
/ 27 октября 2009

Я думаю, что нашел лучший ответ на мой вопрос. - это такое животное, как «не унаследованный» аплет панели управления, который описан в MSDN здесь . «Теперь в Windows Vista вы можете добавить свой собственный апплет в панель управления, создав исполняемый файл для своего апплета и зарегистрировав его, вместо того, чтобы создавать файл .cpl».

...