Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
DCOM permissions

Автор: Абдулин Марат
WEB-сайт: ООО "АТОЛ технологии"

Технология DCOM основана на технологии COM и представляет собой ее продолжение. Основное назначение DCOM - организация взаимодействия клиента с удаленным сервером.

Как пользоваться DCOM

Чтобы воспользоваться возможностями DCOM должны быть соблюдены следующие требования:
  1. Наличие Клиент.exe, Сервер.exe. ("Каркасы" этих приложений прилагаются к документу см Samples\DCOMSvr).
  2. Наличие сети как минимум из двух компьютеров (платформы 9x, Me, NT, 2000). Компьютеры должны "видеть" друг друга.
  3. На клиентском и серверном компьютере должна быть установлена поддержка DCOM (на NT и 2000 поддержка DCOM есть по умолчанию, в 9x и Me поддержка отключена, ее можно получить по адресу http://www.microsoft.com/com/resources/downloads.asp). Компьютеры должны быть в одном домене (на сколько критично это требование под вопросом, я не исследовал, информация из http://www.delphikingdom.com/).
  4. Сервер.exe должен быть зарегистрирован на клиентской машине и серверной машине (после регистрации на клиентской машине Сервер.exe можно удалить). Регистрация Сервер.exe производится из командной строки: сервер.exe regserver. Разрегистрация также из командной строки: сервер.exe unregserver
  5. Должен быть настроен DCOM (можно не задумываясь продублировать настройки, как на клиенте, так и на сервере) для запуска и доступа к Сервер.exe (настроить DCOM можно при помощи утилиты DCOMCNFG.EXE или программно, см. Samples\DcomPerm).
  6. Если DCOM настраивается для Win9x, то после настройки необходимо перезагрузить компьютер.
  7. Если изменяются настройки протоколов используемых в DCOM, то следует перезагрузить компьютер (действительно для любой платформы).
  8. Если Сервер.exe запускается на платформе 9x, то сервер должен быть предварительно загружен, можно поместить запуск сервера в StartUp.

Скачать исходные коды: DComPermSrc.zip (28 K)

Настройка DCOM при помощи DCOMCNFG.EXE

Закладка DefaultProperties
Элемент Значение   9x   NT 
Enable Distributed COM on this computer True + +
Enable COM Internet Services on this computer Не имеет значения - +
Default Authentication Level None + +
Default Impersonation Level Impersonate + +
Provide additional security for reference tracking False + +

Закладка DefaultSecurity
Элемент Значение  9x   NT 
Enable remote connection True + -
Default access permissions Everyone = allow access - +
Default access permissions The world = grant access + -
Default launch permissions Everyone = allow launch - +

Закладка Applications Позиционироваться на сервер.exe. Кнопка "Properties..."

Закладка Location
Элемент Значение  9x   NT 
Run application on the computer where the data is located False + +
Run application on this computer True + +
Run application on the following computer False + +

Закладка Security
Элемент Значение  9x   NT 
Use default access permissions True + +
Use default launch permissions True - +
Use custom configuration permissions False - +

Закладка Identity
Элемент Значение  9x   NT 
Which user account do you want to use to run this application The interactive user - +

Программная настройка DCOM

Для программной настройки DCOM можно воспользоваться процедурами модуля BDcomPrm

DefaultProperties

.
Элемент Процедура Описание  9x   NT 
Enable Distributed COM on this computer IsDCOMOk Проверяет наличие поддержки DCOM + +
IsEnabledDCOM Проверяет разрешен ли DCOM на данной машине + +
SetEnableDCOM Разрешает DCOM на данной машине + +
IsDCOMProtocolsEnabled Проверяет наличие протоколов DCOM - +
Default Authentication LevelDefault Impersonation Level IsInitializeSecurityOk Проверяет можно ли устанавливать параметры Security.
Возвращает True для платформы NT и False для 9x
- +
InitializeDefaultSecurity Устанавливает параметры Security по умолчанию.Вызов данной процедуры необходимо поместить перед Application.Initialize в клиентской и серверной программе.Процедуру можно вызывать только один раз для текущего процесса.Процедура должна быть вызвана до первого обращения к COM-объекта, требующего маршалинга+ +
SetDefaultDCOMCommunicationProperties Устанавливает параметры по умолчанию для Authentication Level, Impersonation Level + +
CreateRemoteComObjectEx Определяет Authentication Level, Impersonation Level запускаемого серверного приложения.Данная процедура может использоваться вместо CreateRemoteComObject + +
Provide additional security for reference tracking RemoveLegacySecure-References При разрешении DCOM необходимо вызвать эту процедуру, чтобы сбросить флажок Повышенной безопасности для отслеживания ссылок + +

DefaultSecurity

Элемент Процедура Описание  9x   NT 
Enable remote connection IsDCOMOk, IsEnabledDCOM, SetEnabledDCOM + +
Default access permissions ListDefaultAccessACL Возвращает в строке описание разрешений доступа к DCOM приложениям по умолчанию. Данное описание может быть выведено в Memo. - +
  ChangeDefaultAccessACL ChangeDefaultAccessACL Изменяет параметры доступ к DCOM приложениям по умолчанию.Principal - имя пользователя (например Everyone)SetPrincipal - True добавить пользователя в список, False - удалить.Permit - разрешить параметры для указанного пользователя - +
Default launch permissions ListDefaultLaunchACL Возвращает в строке описание разрешений запуска DCOM приложений по умолчанию. Данное описание может быть выведено в Memo - +
  ChangeDefaultLaunchACL ChangeDefaultLaunchACL Изменяет параметры запуска DCOM приложений по умолчанию - + - +
  IsDefaultLaunchAccess-Allowed Возвращает True, если разрешен запуск DCOM приложений по умолчанию. - +

Application Security

Все процедуры и функции данной категории получают в качестве входного параметра AppID - CLSID объекта сервера.
Элемент Процедура Описание  9x   NT 
Access permissions ListAppIDAccessACL Возвращает в строке описание разрешений доступа к DCOM приложению. Данное описание может быть выведено в Memo.AppID - CLSID объекта сервера. - +
ChangeAppIDAccessACL Изменяет параметры доступ к DCOM приложениям по умолчанию.AppID - CLSID объекта сервера.Principal - имя пользователя (например Everyone)SetPrincipal - True добавить пользователя в список, False - удалить.Permit - разрешить параметры для указанного пользователя - +
Default launch permissions ListAppIDLaunchACL Возвращает в строке описание разрешений запуска DCOM приложения. Данное описание может быть выведено в Memo.AppID - CLSID объекта сервера. - +
ChangeAppIDLaunchACL Изменяет параметры запуска DCOM приложений по умолчанию.AppID - CLSID объекта сервера. - +
IsLaunchAccessAllowed Возвращает True, если разрешен запуск DCOM приложения. - +
AllowLaunchAccess Разрешает запуск DCOM приложения - +

Закладка Identity

Все процедуры и функции данной категории получают в качестве входного параметра AppID - CLSID объекта сервера.
Элемент Процедура Описание  9x   NT 
Which user account do you want to use to run this application IsInteractiveUser Проверяет, используется ли для запуска приложения учетная запись взаимодействующего пользователя - +
SetInteractiveUser Устанавливает параметр: использовать для запуска приложения учетную запись взаимодействующего пользователя - +

Остальные процедуры и функции

Все остальные процедуры и функции модуля BDcomPrm носят служебный характер.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay