Поделиться через


Перенаправление DLL/COM в Windows

Перенаправление DLL/COM — это стратегия изоляции приложений, применяемая корпоративными администраторами в Windows XP.

**Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP с пакетом обновления 2 (SP2): ** Использовать стратегии перенаправления DLL/COM не рекомендуется, так как изолированные приложения, использующие манифесты и параллельные сборки , могут быть проще обновлять и обслуживать. Наличие локального файла игнорируется при наличии манифеста. Стратегия перенаправления DLL/COM с использованием локальных файлов работает, если у приложения нет манифеста.

Перенаправление DLL/COM привязывает приложение к локальной версии компонента. Файлы локального компонента можно хранить отдельно от системной версии компонента в расположении, которое является частным для приложения. Системная версия компонента глобально зарегистрирована и доступна для всех других приложений, которые к ней привязаны. Локальная версия компонента зарезервирована для монопольного использования приложения. При необходимости файлы компонентов, используемые приложением, можно загрузить в память одновременно с файлами компонентов системы.

Перенаправление DLL/COM активируется путем установки специального файла вместе с копией файла локального компонента в тот же каталог, что и исполняемый файл приложения. Специальный файл — это пустой файл с именем файла исполняемого файла приложения и добавлен с расширением LOCAL. Например, чтобы активировать перенаправление DLL/COM для приложения Myapp, локальную версию компонента и пустой файл с именем Myapp.exe.local необходимо скопировать в папку, содержащую Myapp.exe. Это привязывает приложение к локальной версии компонента, а не к глобально общей версии компонента.

Когда приложение загружает файл компонента, например DLL или OCX-файл, Windows сначала ищет его в папке, в которой установлен локальный и исполняемый файл приложения. Если он найден, приложение использует этот файл компонента независимо от пути поиска каталога, определенного в приложении или реестре. Если он не найден, используется файл компонента в определенном пути поиска.

Чтобы установить приложение с перенаправлением DLL/COM, служебная программа установки должна выполнить следующие действия:

  • Пустой локальный файл должен быть скопирован в ту же папку, что и исполняемый файл приложения.
  • Все компоненты, DLL и OCX-файлы, используемые приложением, должны быть скопированы в ту же папку, что и исполняемый файл приложения.
  • Изолированные com-компоненты должны быть зарегистрированы в Windows, чтобы разные версии сборки не конфликтовали друг с другом при одновременной загрузке в память. Процесс регистрации требует, чтобы, хотя реализация компонента может изменяться в разных версиях, некоторые метаданные COM, такие как CLSID, ProgID, библиотека типов и потоковая модель, не могут.
  • Если приложение установлено с помощью установщика Windows, каталог приложения можно защитить с помощью таблицы LockPermissions. Как правило, системе предоставляется доступ на чтение, запись и выполнение; всем остальным процессам предоставляется доступ только на выполнение и чтение.