Подразделы ветви ActiveX-объекта
Подразделы, описывающие ActiveX-объекты, кроме параметров, могут содержать множество дочерних подразделов. Среди них могут присутствовать и уже рассмотренные shell и shellex, а также некоторые из следующих подразделов.
■ DefaultIcon - параметр (По умолчанию) данного подраздела определяет путь к файлу рисунка, применяемому для отображения значка ActiveX-объекта (например, этот параметр ActiveX-объекта {20D04FE0-3AEA-1069-A2D8-08002B30309D} определяет значок для папки Мой компьютер).
■ Данный подраздел может также хранить параметр строкового типа OpenIcon, который определяет путь к файлу рисунка, используемому вместо стандартного рисунка значка открытого ActiveX-объекта. На рис. 4.6 можно увидеть результат изменения этого параметра для приведенного выше ActiveX-объекта {20D04FE0-3AEA-1069-A2D8-08002B30309D}.

Рис. 4.6. Изменение значка на панели заголовка папки Мой компьютер
ПРИМЕЧАНИЕ
Значение приведенного выше параметра (а также некоторых других параметров, которые будут описаны) может быть переопределено в ветви реестра HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{CLSID+Hомep ActiveX-объекта}.
■ ShellFolder - параметры этого подраздела определяют различные свойства значка ActiveX-объекта, а также команд его контекстного меню. Подраздел может включать в себя следующие параметры.
• WantsFORDISPLAY- присутствие этого параметра строкового типа запрещает системе выводить название соответствующего ActiveX-объекта под его значком. Например, если создать этот параметр в ветви реестра {645FF040-5081-101B-9F08-00AA002F954E}, то можно добиться такого же эффекта, как и на рис. 4.7.

Рис. 4.7. Скрытие названия значка Корзины
• HideInWebView - присутствие этого параметра строкового типа говорит системе о том, что она должна скрывать значки, соответствующие данному ActiveX-объекту, при использовании нового вида окна Проводника (при установке переключателя в положение Отображение списка типичных задач в папках на вкладке Общие диалога Свойства папки).
• HideFolderVerbs - присутствие данного параметра строкового типа говорит системе о том, что она не должна добавлять к контекстному меню значка ActiveX-объекта команды контекстного меню стандартного идентификатора Folder.
ПРИМЕЧАНИЕ
Существует и альтернативная возможность - сказать системе, что она обязана добавить к контекстному меню данного ActiveX-объекта команды, определяемые идентификатором Folder. Для этого необходимо установить битовую маску 0х20000000 в параметре DWORD-типа Attributes, описание которого приведено ниже.
• Attributes - значение данного параметра DWORD-типа определяет, будут ли отображаться различные стандартные команды контекстного меню для значка данного ActiveX-объекта. Параметр является битовой маской, биты которой имеют следующую функциональность: 0х00000001 - определяет присутствие команды Копировать; 0х00000002 - устанавливает присутствие команды Вырезать; 0х00000010 - определяет команду Переименовать; 0х00000020 -устанавливает команду Удалить; 0х00000040 - определяет отображение команды Свойства; 0х00000100 - устанавливает отображение команды Вставить; 0х00200000 - определяет отображение команд, содержащихся в подразделе ContextMenuHandlers (он является дочерним по отношению к разделу shellex, который, в свою очередь, располагается в одном из разделов идентификаторов).
Например, на рис. 4.8 отображено контекстное меню значка Корзины с использованием значения параметра Attributes, равного 0х20000030.

Рис. 4.8. Редактирование контекстного меню значка Корзины
ПРИМЕЧАНИЕ
В подразделе ShellFolder может присутствовать DWORD-параметр CallForAttributes. Если его значение отлично от 0, то система не будет использовать содержимое параметра Attributes для ограничения контекстного меню значка данного ActiveX-объекта.
Это далеко не все подразделы, которые могут находиться в ветви ActiveX-объекта, но это самые интересные из них (с точки зрения возможностей изменения). О других подразделах ветви ActiveX-объекта можно узнать в базе данных по реестру, поставляемой вместе с этой книгой.
Другие разделы корневого раздела
Уже была рассмотрена большая часть содержимого корневого раздела реестра HKEY_CLASSES_ROOT - разделы расширения, идентификатора и раздел CLSID, но, кроме них, корневой раздел включает в себя еще несколько разделов, которые стоит описать. Некоторые из описываемых в разделах параметров реализуют уникальные возможности, которых в Windows больше никакими другими способами достичь нельзя.
■ DeskLink - реализует возможность создания ярлыков на Рабочем столе с помощью команды контекстного меню файлов Отправить. Он описывает ActiveX-объект, предназначенный для выполнения этой операции. Если удалить или переименовать этот раздел, то соответствующая возможность будет запрещена.
■ Applications - определяет список программ, которые будут отображаться в диалоге Открыть с помощью. Он включает в себя подразделы, названные в честь соответствующих программ. Если подраздел присутствует, то диалог Открыть с помощью будет содержать возможность открытия файла с помощью этой программы.
Раздел Applications имеет и противоположную описанной выше функции возможность - он определяет те программы, которые никогда не будут отображаться в диалоге Открыть с помощью. Если программа не должна отображаться в диалоге, то в дочернем подразделе раздела Applications, названном в честь данной программы, нужно создать параметр строкового типа NoOpenWith. Значение этого параметра не используется.
Можно еще создать строковый параметр NoStartPage. Если в дочернем подразделе раздела Applications, названном в честь данной программы, будет находиться приведенный строковой параметр, то, сколько бы вы ни вызывали соответствующую программу, она не будет отображаться в списке часто используемых программ нового меню Пуск.
Еще один параметр строкового типа, который может содержаться в подразделе, названном в честь необходимой программы, - TaskbarGroupIcon. Его значение определяет путь к файлу рисунка, который будет использоваться в качестве значка сгруппированных программ на Панели задач. Например, можно создать данный параметр в ветви реестра HKEY_CLASSES_ROOT\Applications\explorer.exe (рис. 4.9).

Рис. 4.9. Изменение рисунка группы программ
Но, кроме параметров, раздел Applications может хранить и другие подразделы. Например, в нем может находиться подраздел shell, включающий в себя дополнительные глаголы (или переопределение уже существующих) для файлов, ассоциированных с соответствующей программой уже после того, как будет изменено содержимое подраздела shell ветви HKEY_CLASSES_ROOT\Applications\"приложение".
Кроме подраздела shell, в некоторых разделах ветви системного реестра HKEY_CLASSES_ROOT\Applications могут находиться и другие подразделы. Например, в ветви HKEY_CLASSES_ROOT\Applications\explorer.exe может располагаться подраздел drives. С его помощью можно переопределить файлы рисунков, применяемые в качестве значков логических дисков. Для этого достаточно в подразделе drives создать вложенный подраздел с названием соответствующим букве диска, значок которого нужно изменить, а в созданном подразделе нужно создать еще один - DefaultIcon. Параметр (По умолчанию) этого подраздела как раз и определяет значок, используемый для отображения данного диска. Например, чтобы сменить значок диска H:, нужно изменить параметр (По умолчанию) ветви реестра HKEY_CLASSES_ROOT\Applications\explorer.exe\drives\h\DefaultIcon.
■ MIME - содержит сведения обо всех типах MIME, зарегистрированных на компьютере. Описание всех этих типов находится в ветви системного реестра HKEY_CLASSES_ROOT\MIME\Database\Content Type, включающей в себя подразделы с именами, соответствующими типу (audio/basic, image/bmp, text/plain и т.д.). Эти подразделы могут хранить следующие параметры:
• CLSID - определяет CLSID-номер сервера ActiveX, который будет обслуживать данный тип;
• Extension - устанавливает расширение файла, которое использует данный тип MIME;
• Encoding - данный параметр BINARY-типа определяет код для кодировки данных MIME.
■ AppID - предназначен для определения настроек удаленной активизации и защиты различных ActiveX-объектов, описанных в разделе CLSID. Как и CLSID, раздел AppID хранит список подразделов, названных в честь конкретного CLSID-номера ActiveX-объекта. О параметрах и подразделах этих ветвей реестра здесь рассказано не будет. Тем не менее если эта тема вам интересна, то в базе данных по реестру, поставляемой вместе с книгой, есть сведения о параметрах и подразделах этой ветви реестра.