Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как повысить безопасность старых Delphi-приложений, работающих в Windows 8 и 10 с помощью UAC

Delphi , Синтаксис , Справочник по API-функциям

Статья:

Проблема, с которой сталкиваются разработчики, использующие старые Delphi-приложения в новых версиях Windows (Windows 8 и 10), связана с необходимостью повышения прав доступа (elevation) для выполнения программы. Это связано с введением в Windows Vista и последующих версиях политики безопасности, известной как Controlled Folder Access (CFA) и User Account Control (UAC). Эти механизмы предназначены для предотвращения несанкционированного доступа к системным ресурсам и повышения общей безопасности системы.

Пример кода, требующего эlevation:

В старых программах, написанных на Delphi 7, для выполнения некоторых операций может потребоваться повышение прав. Например, запись в системный реестр, изменение файлов в системных директориях или выполнение операций, которые требуют административных привилегий.

// Пример кода, который может вызвать запрос на повышение прав:
procedure WriteToRegistry(RegKey: string; ValueName: string; ValueData: string);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create(KEY_READ or KEY_WRITE);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey(RegKey, False);
    Reg.WriteString(ValueName, ValueData);
  finally
    Reg.CloseKey;
    Reg.Free;
  end;
end;

Решение проблемы:

Пользователи часто сталкиваются с проблемами, когда имя файла или ресурсов программы содержит ключевые слова, такие как "install", "setup", "update" и т.д., которые могут вызвать поведение системы, предполагающее, что программа является установщиком, и, как следствие, потребовать повышения прав.

Чтобы решить эту проблему, можно предпринять следующие шаги:

  1. Изменить имя файла и ресурсов программы, убрав из них ключевые слова, которые могут вызвать повышение прав.

  2. Создать файл манифеста с указанием уровня выполнения (requestedExecutionLevel) для предотвращения автоматического повышения прав. Пример манифеста:

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
  1. Скомпилировать манифест в ресурсы программы с помощью Delphi.

  2. Использовать инструменты отладки, например, для выявления кода, который вызывает повышение прав, и оптимизировать его для работы без необходимости администраторских привилегий.

  3. Протестировать приложение на целевой системе для подтверждения корректности работы после внесенных изменений.

Важные замечания:

  • Не все API вызовы требуют эlevation. Иногда достаточно изменить имя файла или ресурсов.
  • Использование манифеста позволяет более точно настроить поведение программы в контексте UAC.
  • Важно тестировать приложение после внесения изменений, чтобы убедиться в его корректной работе в новых условиях.

Подтвержденный ответ указывает на то, что не всегда проблема заключается в конкретном API вызове. Иногда достаточно просто изменить имя файла или ресурсов, чтобы избежать автоматического повышения прав. Создание манифеста с указанием уровня выполнения может помочь в решении этой задачи.

Альтернативный ответ также подчеркивает, что причиной может быть попытка записи в системный реестр или системные директории, что с Windows Vista и последующими версиями требует эlevation.

Обучение и документация по UAC и связанным технологиям помогут лучше понять механизмы безопасности Windows и научат правильно работать с ними, что позволит избежать распространенных ошибок и улучшить безопасность старых Delphi-приложений в новых версиях операционной системы.

Создано по материалам из источника по ссылке.

Создана статья, посвящённая улучшению безопасности старых приложений Delphi, работающих в Windows 8 и 10, с использованием технологии UAC для решения вопросов повышения прав доступа.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Справочник по API-функциям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-13 19:18:57/0.0037319660186768/0