DCOM permissions
Автор: Абдулин Марат
WEB-сайт: ООО "АТОЛ технологии"
Технология DCOM основана на технологии COM и представляет собой ее продолжение. Основное назначение DCOM - организация взаимодействия клиента с удаленным сервером.
Как пользоваться DCOM
Чтобы воспользоваться возможностями DCOM должны быть соблюдены следующие требования:- Наличие Клиент.exe, Сервер.exe. ("Каркасы" этих приложений прилагаются к документу см Samples\DCOMSvr).
- Наличие сети как минимум из двух компьютеров (платформы 9x, Me, NT, 2000). Компьютеры должны "видеть" друг друга.
- На клиентском и серверном компьютере должна быть установлена поддержка DCOM (на NT и 2000 поддержка DCOM есть по умолчанию, в 9x и Me поддержка отключена, ее можно получить по адресу http://www.microsoft.com/com/resources/downloads.asp). Компьютеры должны быть в одном домене (на сколько критично это требование под вопросом, я не исследовал, информация из http://www.delphikingdom.com/).
- Сервер.exe должен быть зарегистрирован на клиентской машине и серверной машине (после регистрации на клиентской машине Сервер.exe можно удалить). Регистрация Сервер.exe производится из командной строки: сервер.exe regserver. Разрегистрация также из командной строки: сервер.exe unregserver
- Должен быть настроен DCOM (можно не задумываясь продублировать настройки, как на клиенте, так и на сервере) для запуска и доступа к Сервер.exe (настроить DCOM можно при помощи утилиты DCOMCNFG.EXE или программно, см. Samples\DcomPerm).
- Если DCOM настраивается для Win9x, то после настройки необходимо перезагрузить компьютер.
- Если изменяются настройки протоколов используемых в DCOM, то следует перезагрузить компьютер (действительно для любой платформы).
- Если Сервер.exe запускается на платформе 9x, то сервер должен быть предварительно загружен, можно поместить запуск сервера в StartUp.
Настройка 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 | + | + |
| Элемент | Значение | 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 | + | + |
| Элемент | Значение | 9x | NT |
| Use default access permissions | True | + | + |
| Use default launch permissions | True | - | + |
| Use custom configuration permissions | False | - | + |
| Элемент | Значение | 9x | NT |
| Which user account do you want to use to run this application | The interactive user | - | + |
Программная настройка DCOM
Для программной настройки DCOM можно воспользоваться процедурами модуля BDcomPrmDefaultProperties
| Элемент | Процедура | Описание | 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 носят служебный характер.