Недокументированные и малоизвестные возможности Windows XP - Роман Клименко
Шрифт:
Интервал:
Закладка:
Данное правило не распространяется на так называемые стандартные глаголы системы — если их параметр (По умолчанию) не определен, то будет использоваться название команды контекстного меню, заложенное в системе для данных глаголов. К стандартным можно отнести следующие глаголы:
■ Open — добавляет в контекстное меню команду Открыть;
■ Explore — Проводник;
■ Find— Найти;
■ Openas — Открыть с помощью;
■ Runas — Запуск от имени;
■ Print — Печать;
■ Printo — в отличие от предыдущих этот глагол не создает команды контекстного меню, зато он добавляет возможность перетаскивания файлов на значок принтера.
Глаголы могут содержать следующие параметры.
■ MUIVerb — если этот параметр строкового типа присутствует в системе, то его значение будет переопределять значение параметра (По умолчанию) данного глагола.
■ FriendlyAppName — еще один параметр строкового типа. Он переопределяет команду, отображаемую в списке Открыть с помощью и идентифицирующую программу, запускаемую с помощью данного глагола. Например, если создать этот параметр в ветви реестра HKEY_CLASSES_ROOTtxtfileshellopen и присвоить ему значение, допустим, Мой блокнотик, то можно будет увидеть диалог, представленный на рис. 4.4.
Рис. 4.4. Создание синонима программы
■ BrowserFlags — этот параметр иногда можно встретить в ветви реестра HKEY_CLASSES_ROOTFoldershellopen. Он является битовой маской и может определять способ открытия папки и всех ее дочерних объектов в Windows. Например, если в значении этого параметра присутствует битовая маска 0x00000020, то папки будут открываться с помощью Проводника, то есть с открытой панелью папок в левой части окна.
■ Extended — если данный параметр строкового типа существует в подразделе глагола, то описываемая этим подразделом команда не будет отображаться в контекстном меню файлов соответствующего расширения.
Кроме параметров, подразделы глаголов включают в себя и несколько подразделов, которые как раз и определяют команды, выполняемые при выборе из контекстного меню файла соответствующего действия.
■ Command — параметр (По умолчанию) данного подраздела содержит команду, которая будет выполняться при выборе из контекстного меню файла соответствующего действия.
ПРИМЕЧАНИЕ
В реестре Windows XP существует ветвь, переопределяющая программу, которая будет запускаться при двойном щелчке кнопкой мыши на файле (то есть переопределяющая параметр (По умолчанию) подраздела command для глагола open). Этой ветвью является HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts«расширение». Она может хранить строковый параметр Application, который как раз и определяет приложение, запускаемое при двойном щелчке на файле с соответствующим расширением.
■ Ddeexec — подраздел необязателен. Его содержимое определяет команду DDE, которая будет исполняться вместе с указанной командой подраздела command при выборе из контекстного меню соответствующего действия. Само сообщение DDE описано в параметре (По умолчанию) данного подраздела, а параметры для его исполнения записаны в дочерних подразделах. Более подробно об этих параметрах можно узнать из базы данных, поставляемой с книгой (в самой книге эти параметры рассмотрены не будут, так как на практике обычные пользователи их применяют не часто).
ПРИМЕЧАНИЕ
DDE (динамический обмен данными) — это специальные команды, которые позволяют нескольким работающим приложениям обмениваться между собой данными. Например, с помощью DDE можно из одного приложения управлять работой другого.
Но не только раздел shell может хранить настройки контекстного меню файлов с соответствующим расширением — команды контекстного меню могут содержаться и в разделе shellex. Нет, это не избыточность — раздел shellex имеет совершенно не такое назначение, как shell. Если раздел shell создан специально для того, чтобы описывать команды меню, вызывающие различные программы с помощью стандартного диалога Запуск программы, то shellex хранит сведения о дополнительных расширениях, которые могут использоваться при отображении значка, контекстного меню или диалога свойств для файлов данного расширения. Эти расширения реализованы в системе с помощью ActiveX-объектов, но о них мы скажем чуть позже, когда будет рассматриваться ветвь реестра, содержащая сведения обо всех установленных на компьютере ActiveX-объектах.
В зависимости от назначения ActiveX-объекта его описание должно находиться в одном из дочерних подразделов раздела shellex. Например, в подразделе PropertySheetHandlers хранятся дополнительные вкладки для диалога Свойства файлов данного расширения. В подразделе ContextMenuHandlers определяются дополнительные команды контекстного меню, использующие для своей работы ActiveX-объекты. В подразделе DropHandler определяется обработчик для операций drag-and-drop, выполняемых с файлами соответствующего расширения, а в подразделе IconHandler находятся сведения об обработчиках значков, которые будут выводить соответствующий значок в диалоге свойств или вместо стандартного значка файла.
Независимо от того, какой подраздел используется для описания расширения ActiveX-файла, его содержимое должно быть представлено в одной из следующих форм.
■ С помощью набора подразделов, названных в честь соответствующих CLSID-номеров ActiveX-объектов (один подраздел — описание одного расширения).
■ С использованием подразделов, название которых не имеет значения. В этом случае параметры (По умолчанию) данных подразделов должны хранить значения, названные в честь соответствующих CLSID-номеров ActiveX-объектов (один подраздел — описание одного расширения).
Подразделы корневого раздела
Как видите, сведения о расширениях файлов хранятся в реестре в виде упорядоченных данных (чего, к сожалению, нельзя сказать о других корневых разделах реестра, структура которых если и прослеживается, то только в некоторых местах).
Но не только сведения о расширениях файлов можно найти в корневом разделе HKEY_CLASSES_ROOT — в нем также хранятся сведения обо всех установленных на компьютере ActiveX-объектах и некоторые другие разделы, описание которых приведено далее.
CLSID
В данной главе книги уже несколько раз упоминалось о таких объектах Windows, как ActiveX, но еще ни слова не говорилось о том, что же это такое и для чего необходимо. Но этот пробел будет восполнен, ведь сейчас начнется рассказ о структуре раздела CLSID, который включает в себя сведения об ActiveX-объектах.
ActiveX-объекты — это специальные, уже скомпилированные программы, доступ к которым нельзя получить напрямую, но их можно вызвать с помощью операционной системы Windows. Всем известными примерами ActiveX-объектов могут быть следующие значки: Мой компьютер, Мои документы, Корзина, Назначенные задания, Панель управления и т.д.
Каждый ActiveX-объект имеет свой уникальный идентификатор — CLSID-номер, который служит в системе в качестве названия ActiveX-объекта. CLSID-номера не берутся из головы — для их создания предназначены специальные программы. Например, программа GUIDgen, входящая в стандартную поставку компилятора Microsoft Visual C++ 6.0.
CLSID-номер является 32-байтным номером, состоящим из шестнадцатиричных чисел, первые восемь байт которого генерируются случайным образом. Следующие четыре байта используют для своего создания текущее значение даты и времени, а остальные генерируются на основе конфигурационных данных компьютера. При этом CLSID-номер берется в фигурные кавычки и имеет такой формат написания: {ХХХХХХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХХХХХХХХХ}.
Перечень CLSID-номеров наиболее интересных ActiveX-объектов можно просмотреть в приложении 4.
Параметры раздела ActiveX-объекта
Раздел CLSID включает в себя список вложенных подразделов, каждый из которых назван на основе CLSID-номера ActiveX-объекта, который он описывает, и хранит сведения только об этом ActiveX-объекте. Подраздел ActiveX-объекта может содержать следующие параметры.
■ (По умолчанию) — определяет дружественное название ActiveX-объекта, предназначенное для отображения в качестве имени значка или команды. Например, если изменить значение параметра (По умолчанию) для ActiveX-объекта {645FF040-5081-101B-9F08-00AA002F954E} (значок Корзины), то изменится и само название Корзины, отображаемое под ее значком. Если изменить значение параметра (По умолчанию) ActiveX-объекта {21EC2020-3AEA-1069-A2DD-08002B30309D}, то изменится заголовок и адрес панели управления при ее отображении (рис. 4.5).
ПРИМЕЧАНИЕ
Если вам необходимо изменить имя сетевого клиента (по умолчанию это имя — Microsoft Windows Network, но можно изменить его на любое другое, например Моя сеть), которое можно найти по пути Сетевое окружение►Вся сеть, то ActiveX-объект сетевого клиента не поможет. Данное имя считывается из параметра строкового типа Name ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanworkstationNetworkProvider — именно этот параметр и нужно изменять.