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

Минимизация EXE-файла: альтернативный доступ к Active Directory без ActiveDs _TLB в Delphi

Delphi , Файловая система , Активные директории

При разработке приложений на Delphi часто возникает потребность доступа к Active Directory (AD). Однако включение в проект библиотеки типов ActiveDs_TLB может существенно увеличить размер итогового EXE-файла. В этой статье мы рассмотрим альтернативный способ доступа к Active Directory без использования ActiveDs_TLB, основанный на позднем связывании COM-объектов.

Преимущества позднего связывания COM-объектов

Позднее связывание COM-объектов позволяет создавать гибкие и динамические приложения, не привязываясь жестко к определенным интерфейсам или библиотекам типов. Это может быть особенно полезно, когда мы хотим минимизировать размер EXE-файла, исключив неиспользуемые зависимости.

Доступ к Active Directory без ActiveDs_TLB

Давайте рассмотрим пример доступа к Active Directory без использования ActiveDs_TLB, основанный на позднем связывании COM-объектов. Нам понадобятся следующие единицы использования:

uses
  SysUtils,
  ActiveX,
  ComObj;

Теперь мы можем создать функцию, которая возвращает IDispatch для данного имени COM-объекта:

function GetObject(const Name: WideString): IDispatch;
var
  Moniker: IMoniker;
  Eaten: Integer;
  BindContext: IBindCtx;
begin
  OleCheck(CreateBindCtx(0, BindContext));
  OleCheck(MkParseDisplayName(BindContext, PWideChar(Name), Eaten, Moniker));
  OleCheck(Moniker.BindToObject(BindContext, NIL, IDispatch, Result));
end;

С помощью этой функции мы можем получить доступ к объектам Active Directory, используя их строковое представление. Например, чтобы получить объект IADsUser для текущего пользователя, мы можем использовать следующий код:

var
  vUser: OleVariant;
begin
  vUser := GetObject(Format('WinNT://%s/%s,user', [GetEnvironmentVariable('USERDNSDOMAIN'), GetEnvironmentVariable('USERNAME')]));
  Writeln('Name = ' + vUser.FullName);
end;

В этом примере мы формируем строку запроса, указывающую на объект IADsUser для текущего пользователя, и получаем этот объект с помощью функции GetObject(). Далее мы просто выводим имя пользователя, используя свойство FullName объекта IADsUser.

Заключение

Использование позднего связывания COM-объектов позволяет минимизировать размер EXE-файла, не прибегая к включению библиотеки типов ActiveDs_TLB в проект. Это может быть особенно полезно, когда мы хотим создать гибкое и динамическое приложение, не привязываясь жестко к определенным интерфейсам или библиотекам типов. В данной статье мы рассмотрели пример доступа к Active Directory без использования ActiveDs_TLB, основанный на позднем связывании COM-объектов.

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

Минимизация EXE-файла: альтернативный доступ к Active Directory без ActiveDs_TLB в Delphi.


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

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




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


:: Главная :: Активные директории ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 10:53:43/0.0058720111846924/0