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.
Скачать исходные коды: 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 носят служебный характер.
|