Вторник, 30.04.2024, 12:03
Распределенная обработка данных
Здравствуйте Гость | RSS
Главная страница Реестр Windows Регистрация Вход
Меню сайта

Считалка

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

§ 14. Реестр Windows.

 

Реестр Windows – это общедоступная база данных операционной системы. Реестр содержит информацию об аппаратном и программном обеспечении, о конфигурации компьютера и о пользователях. Клиенты могут искать там нужные компоненты.

 

§ 14.1. Организация реестра.

 

Информация в реестре упорядочена иерархически и имеет несколько предопределенных высокоуровневых разделов. В разделе HKEY_CLASSES_ROOT хранится информация о компоненте. Важным подразделом  HKEY_CLASSES_ROOT является CLSID (идентификаторы классов), в котором описывается каждый компонент, установленный в системе. В Windows95 и WindowsNT существуют программы редактирования реестра REGEDIT.EXE  и REGEDIT32.EXE  (редактируя реестр легко повредить систему).

CLSID компонента хранится в реестре как строка формата (ххххххх_хххх_хххх_хххх_ххххххххххх) идентификатор класса CLSID компонента является его уникальным идентификатором, однако он неудобен для чтения и запоминания. Понятие ProgID (программный идентификатор) включено в СОМ для облегчения взаимодействия с компонентами разработчиков. ProgID отображает «дружественную», понятную программисту строку в CLSID. Уникальность ProgID не гарантируется. По соглашению ProgID имеет следующий формат

<Программа>.<Компонент>.<Версия>

(до 39 символов версия необязательна)

В CLSID есть еще подраздел InprocServer32.

Его параметр по умолчанию – имя файла DLL.

DLL – это сервер в процессе; она загружается в процессе клиента и предоставляет ему сервисы.

 После того, как вы поместили в реестр нужную информацию, получить CLSID по ProcID и наоборот легко. Библиотека СОМ API предоставляет несколько функций, предназначенных для сравнения, создания и преобразования типов GUID. Наиболее употребляемые из них:

 

Функция

Назначение

CoCreateGuid (Guid*pGuid)

Обеспечивает создание одного уникального GUID

ISEgualIID (REFIID, REFIID )

Сравнивает два IID

ISEgualIID (REFCLSID, REFCLSID )

Сравнивает два CLSID

CLSIDFromProgID (LPCOLESTR, LPCLSID)

Возвращает CLSID для задания ProgID

ProgIDFromCLSID (REFCLSID, LPOLESTR*)

Возвращает ProgID для CLSID

 

§ 14.2. Саморегистрация.

         Для того, чтобы поместить информацию о компоненте в реестр Windows, необходимо экспортировать две функции:

         STDAPI DLLRegisterServer ( );

         STDAPI DLLUnregesterServer ( );

[STDAPI определен в objBASE.H как #defane STDAPI EXTERN_C HRESULT STDAPICALLTYPE что раскрывается в extern "CHRESULT_stdcall]

         С помощью программы утилиты REGSVR32.TXT эти функции можно вызывать для регистрации компонента.

         Большинство программ установки вызывают DLLRegisterServer в процессе своей работы. Для этого нужно загрузить DLL с помощью LoadLibrery, получить адрес функции с помощью GetProcAddress и потом вызвать функцию.

 

         § 14.3. Категории компонентов.

 

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

         Решение этой проблемы дают категории компонентов. Категория компонентов – это набор интерфейсов, которым присвоен CLSID, называемый в Ланном случае  CATID. Компоненты, реализующие все интерфейсы некоторой категории, могут зарегистрироваться, как члены данной категории. Это позволяет клиентам более осмысленно выбирать компоненты из реестра, рассматривать только те, которые принадлежат к некоторой категории.

         Компонент может входить в произвольное число категорий. Компонент не обязан поддерживать исключительно те интерфейсы, которые определены категорией, он может поддерживать любой интерфейс в дополнение к ним.

         В системе Windows, имеется стандартный диспетчер категории компонентов (CLSID_StdComponentCategoriesMgr) – стандартный компонент СОМ, реализующий два интерфейса, ICatRegister и ICatInformation.  ICatRegister используется для регистрации и удаления категорий, для дебавления и удаления компонентов к категории. С помощью ICatInformation можно найти:

         1) все категории зарегистрированные в системе;

         2) все компоненты , принадлежащие данной категории;

         3) все категории, которым принадлежит данный компонент.

 

         § 14.4. OleView.

         [Редактор реестра показывает все данные в виде списка CLSID.] Хорошим средством просмотра реестра с точки зрения СОМ является утилита OLEVIEW, представляемая Visial С++ и средой SDK. Она обеспечивает несколько различных подходов к использованию компонентов в вашей системе. Вместо длинного списка CLSID и других CUID OLEVIEW отображает деревья, содержащие элементы с дружественными именами. Кроме того, OLEVIEW позволяет просматривать категории компонентов, установленных в системе.
Поиск

Друзья сайта

2024