Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Секреты Windows: статьи о реестре, rundll32.exe, программах Недокументированные возможности Windows XP. Реестр. Часть 2


Уважаемые подписчики, на нашем сайте (http://www.onestyle.com.ua) организован опрос, тема которого: 'Содержимое какой из книг вы бы хотели прочитать в будущих статьях на нашем сайте?'. Голосование ведется до 7 апреля. Спешите проголовать за книгу, содержимое которой вы хотели бы видеть в данной рассылке!
Другие наши рассылки:
  • Новости IT-мира: Ежедневно ссылки на новости и статьи сайтов ixbt.com, thevista.ru, xakep.ru, securitylab.ru, oszone.ru, inattack.ru, ht.ua, overclockers.ru, центр загрузки Microsoft, softportal.com, realcoding.net, 3dcenter.ru, ladoshki.com, smti.ru, seonews.ru, ibm.com и др.

Продолжение, начало в выпусках: 21

Книга "Недокументированные возможности Windows XP. Библиотека пользователя", Глава 2. Реестр Windows XP. Часть 2. Подраздел идентификатора

А теперь давайте поговорим о содержимом второго подраздела, используемого для описания расширения. Этот подраздел может содержать следующие параметры...

Кроме подразделов идентификаторов для расширений файлов, в системе также существуют стандартные идентификаторы Windows, описывающие такие объекты, как папка, диск, неизвестные расширения.

  • FOLDER — содержит в себе настройки для папок Windows. Также команды контекстного меню, описываемые данным идентификатором, могут использоваться в построении контекстного меню таких объектов, как диски, директории, значки КОРЗИНА и МОЙ КОМПЬЮТЕР.
  • DIRECTORY — данный идентификатор определяет настройки контекстного меню для директорий Windows (папок с файлами). Также данный идентификатор содержит в себе подраздел BACKGROUND — именно содержимое этого подраздела определяет команды УПОРЯДОЧИТЬ ЗНАЧКИ и СОЗДАТЬ для контекстного меню рабочего стола и проводника.
  • DRIVE — данный идентификатор содержит в себе настройки значков дисков в системе. При этом системой могут применяться и дополнительные идентификаторы для отображения дисков, например, если в данный момент в CD-ROM вставлен музыкальный диск, то будет также использоваться идентификатор AUDIOCD.
  • COMPRESSEDFOLDER — данный идентификатор определяет настройки сжатых папок.
  • * — если все предыдущие идентификаторы описывали настройки конкретных файлов расширений, то данный идентификатор определяет настройки для всех расширений файлов, зарегистрированных в системе. Именно сюда довольно часто добавляют свои команды контекстного меню различные программы. Например, данный идентификатор используется программами WINRAR и АНТИВИРУС КАСПЕРСКОГО для добавления своих команд к контекстному меню файлов.
  • UNKNOWN — а этот идентификатор определяет настройки для всех файлов, незарегистрированных в системе. Обычно этот идентификатор содержит только описание команды ОТКРЫТЬ С ПОМОЩЬЮ…
  • ALLFILESYSTEMOBJECTS — еще один идентификатор. Этот идентификатор является родительским для всех других идентификаторов — он определяет настройки для всего: для зарегистрированных файлов, для незарегистрированных файлов, для папок, дисков и т.д. По умолчанию данный идентификатор определяет только команду ОТПРАВИТЬ…
Параметры подраздела идентификатора

EditFlags Значение данного параметра dword-типа определяет различные ограничения на модификацию параметров данного расширения при помощи вкладки ТИПЫ ФАЙЛОВ диалога СВОЙСТВА ПАПКИ. Например, если значение этого параметра равно 0х00000001, то соответствующего расширения в списке зарегистрированных файлов данной вкладки вы не найдете. Если же значение данного параметра равно 0х00000008, то кнопка ДОПОЛНИТЕЛЬНО вкладки ТИПЫ ФАЙЛОВ будет заблокирована для данного расширения. А если значение данного параметра равно 0х00000200, то будет запрещена возможность смены значка для данного расширения.

А можно вообще сложить все предыдущие значения — этот параметр является набором управляющих битов (битовой маской), поэтому это приведет к одновременному скрытию типа файлов из диалога СВОЙСТВА ПАПКИ, блокировке кнопки ДОПОЛНИТЕЛЬНО для данного расширения и запрету изменения значка.

Для примера, рисунок 2.03 отображает диалог изменения txt-файла с установленным значением параметра в 0х000003с0. то есть, используются следующие битовые маски:

  • 0х00000040 — делает недоступной кнопку Изменить диалога Изменение свойств типа файлов (данный диалог вызывается при нажатии на кнопку Дополнительно на вкладке Типы файлов);
  • 0х00000080 — делает недоступной кнопку Удалить диалога Изменение свойств типа файлов;
  • 0х00000100 — запрещает пользователю изменение описания файлов с данным расширением при помощи поля диалога Изменение свойств типа файлов;
  • 0х00000200 — запрещает пользователю изменение пиктограммы, присвоенной файлам с данным расширением при помощи кнопки Изменить значок в диалоге Изменение свойств типа файлов;

Рисунок 1 Рис. 2.03 Запрет на удаление, изменение, смену описания и смену значка

AlwaysShowExt и NeverShowExt Эти два параметра строкового типа являются взаимоисключающими. То есть, если в подразделе присутствует один из этих параметров, то другого там быть не должно. Если в подразделе будет присутствовать первый параметр (значения им присваивать не нужно), тогда соответствующее расширение файла будет отображаться всегда. Не зависимо от того, как настроена система (здесь имеется в виду возможность скрытия зарегистрированных расширений при помощи соответствующего флажка вкладки ВИД диалога СВОЙСТВА ПАПКИ). А если присутствует второй параметр, то расширение будет всегда скрыто.

InfoTip Значение этого параметра строкового типа определяет подсказку, которая будет отображаться при удержании над файлом данного расширения указателя мыши. Этот параметр может содержать в себе или произвольный текст или специальные зарезервированные слова (если присутствуют обычные слова, то зарезервированные считаются тоже обычными словами и не выполняют заложенных в них действий). Зарезервированные слова пишутся после строки prop:. К таким словам относятся: Comment (в подсказке будет выводиться комментарий, вводимый в диалоге СВОЙСТВА данного файла), Size (в подсказке отображается размер файла), Access (отображаются права на доступ к файлу), Owner (отображается логин создателя файла), Year и другие. Несколько зарезервированных слов пишутся через точку с запятой.

На рисунке 2.01 можно было видеть, что для txt-файлов в подсказке отображаются сведения о размере, а также описание файла, задаваемое в параметре по умолчанию подраздела идентификатора.

Параметр по умолчанию подраздела идентификатора содержит в себе строку описания, отображаемую в поле ТИП ФАЙЛА диалога СВОЙСТВА. Также значение данного параметра отображается как название команды в меню СОЗДАТЬ контекстного меню рабочего стола или проводника.

IsShortCut Это необязательный параметр строкового типа, не содержащий в себе никакого значения. Если он присутствует в подразделе, то файлы с соответствующим расширением будут считаться ярлыками. Это приведет к тому, что внизу значка файла будет появляться стрелочка, символизирующая файл ярлыка.

BrowseInPlace Очень интересный строковой параметр, значение которого можно не указывать. Он используется только для идентификаторов, файлы которых открывают окно проводника — например, для идентификатора DIRECTORY. Если данный идентификатор будет содержать в себе параметр строкового типа BROWSEINPLACE, то все папки в системе будут открываться с помощью браузера Internet Explorer. Например, если попытаться открыть папку C:\Windows, то браузер будет искать сайт с адресом C:\Windows. Конечно, у него это не получится, поэтому с помощью данного параметра строкового типа можно запретить пользователям доступ к папкам системы.

DocObject Этот параметр строкового типа также очень интересен, ведь если его создать, допустим, в подразделе DIRECTORY, то мы добьемся аналогичных действий, что и с помощью предыдущего параметра.

Thumbnail Еще один параметр строкового типа. Его значение указывает на файл изображения, который будет использоваться для отображения в виде эскиза страницы для файлов с соответствующим расширением (правда, данный параметр применяется не для всех идентификаторов). Например, если создать данный параметр в подразделе идентификатора DRIVE, тогда все диски при использовании вида ЭСКИЗЫ СТРАНИЦ будут представлены с помощью указанного вами изображения. А если создать данный параметр в подразделе идентификатора FOLDER, тогда ваш значок будет использоваться для отображения значка КОРЗИНЫ.

DefaultDropEffect Данный параметр DWORD-типа определяет, какую именно операцию будет выполнять система при перемещении файлов с данным расширением в другое окно. По умолчанию при этом она перемещает файл любого расширения в соответствующую папку, но если значение этого параметра равно 1, то файл с соответствующим расширением будет копироваться.

Подразделы ветви идентификатора

Подраздел идентификатора, кроме параметров, может содержать в себе и другие подразделы — они определяют значок, используемый для файлов с данным расширением, текущую версию идентификатора, а также сами команды контекстного меню файла. Давайте рассмотрим содержимое этих подразделов.

CurVer Параметр по умолчанию данного подраздела определяет названия идентификатора, имеющего более новые сведения о расширении. Если вы встретите данный подраздел в каком-нибудь идентификаторе расширения, тогда можете сразу смотреть на его параметр по умолчанию и искать записанный в нем идентификатор — ведь настройки текущего идентификатора в системе уже не применяются.

DefaultIcon Параметр по умолчанию этого подраздела определяет путь к bmp-файлу изображения, применяемому для отображения значков файлов с соответствующим расширением.

Shell Это, наверное, самый интересный подраздел идентификатора, ведь именно его содержимое и определяет команды контекстного меню для расширения, а также их свойства. Параметр по умолчанию данного подраздела определяет название глагола (глаголы являются подразделами раздела SHELL), команда которого будет использоваться при выполнении попытки открытия файлов соответствующего расширения двойным щелчком мыши. Также параметр по умолчанию может содержать в себе перечисление всех глаголов подраздела — в этом случае он описывает последовательность, в которой они будут расположены в контекстном меню файла.

Сами же глаголы, как мы уже сказали, являются подразделами ветви SHELL и могут содержать в себе различные параметры (один глагол определяет одну команду контекстного меню). Например, среди этих параметров можно встретить следующие.

  • Параметр по умолчанию глагола определяет название команды, которая будет идентифицировать соответствующее действие в контекстном меню файлов. Если данный параметр не будет определен, тогда в качестве названия команды будет использоваться название подраздела глагола. Данное правило не распространяется на так называемые стандартные глаголы системы — если их параметр по умолчанию не определен, тогда будет использоваться название команды контекстного меню, заложенное в системе для данных глаголов. К стандартным глаголам можно отнести следующие: OPEN — добавляет в контекстное меню команду ОТКРЫТЬ; EXPLORE — добавляет в контекстное меню команду ПРОВОДНИК; FIND — добавляет в контекстное меню команду НАЙТИ; OPENAS — добавляет команду ОТКРЫТЬ С ПОМОЩЬЮ; RUNAS — добавляет команду ЗАПУСК ОТ ИМЕНИ…; PRINT —добавляет команду ПЕЧАТЬ; PRINTO — в отличие от предыдущих глаголов, этот глагол не создает команды контекстного меню, зато он добавляет возможность операции drag-n-drop с целью перетаскивания файлов на значок принтера;
  • MUIVERB — если этот параметр строкового типа присутствует в системе, тогда его значение будет переопределять значение параметра по умолчанию данного глагола.
  • FRIENDLYAPPNAME — еще один параметр строкового типа. Его значение переопределяет команду, отображаемую в списке ОТКРЫТЬ С ПОМОЩЬЮ… и идентифицирующую программу, запускаемую с помощью данного глагола. Например, если мы создадим данный параметр в ветви реестра HKEY_CLASSES_ROOT\TXTFILE\SHELL\OPEN и присвоим ему значение, допустим Мой блокнотик, тогда мы сможем увидеть диалог, представленный на рисунке 2.04.
  • Рисунок 2 Рис. 2.04. Создание синонима программы

  • BROWSERFLAGS — данный параметр иногда можно встретить в ветви реестра HKEY_CLASSES_ROOT\FOLDER\SHELL\OPEN. Он является битовой маской и может определять способ открытия папки и всех ее дочерних объектов в Windows. Например, если в значении этого параметра присутствует битовая маска 0х00000020, тогда папки будут открываться с помощью вида ПРОВОДНИК, то есть, с открытой панелью папок в левой части окна.
  • EXTENDED — если данный параметр строкового типа существует в подразделе глагола, то описываемая этим подразделом команда не будет отображаться в контекстном меню файлов соответствующего расширения.

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

  • Command — параметр по умолчанию данного подраздела содержит команду, которая будет выполняться при выборе из контекстного меню файла соответствующего действия. Также в реестре Windows XP существует ветвь реестра, переопределяющая программу, которая будет запускаться при двойном щелчке мышью на файле (то есть, переопределяющая параметр по умолчанию подраздела command для глагола open). Этой ветвью является ветвь реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\«расширение». Данная ветвь может содержать в себе строковой параметр Application, который как раз и определяет приложение, которое будет запущено при двойном щелчке на файле с соответствующим расширением.
  • Ddeexec — данный подраздел необязателен. Его содержимое определяет команду DDE, которая будет исполняться вместе с указанной командой подраздела command при выборе из контекстного меню соответствующего действия. Само сообщение DDE описано в параметре по умолчанию данного подраздела, а параметры для его исполнения записаны в дочерних подразделах. Более подробно об этих параметрах можно узнать из базы данных, поставляемой с книгой (в самой же книге эти параметры мы рассматривать не будет, так как на практике обычные пользователи их используют нечсто).

Shellex Но не только подраздел SHELL может содержать в себе настройки контекстного меню файлов с соответствующим расширением — также команды контекстного меню могут содержаться и в этом разделе. Нет, это не избыточность — подраздел SHELLEX имеет совершенно другое назначение, чем подраздел SHELL. Если подраздел SHELL создан специально для того, чтобы описывать команды меню, вызывающие различные программы с помощью стандартного диалога ВЫПОЛНИТЬ, то подраздел SHELLEX содержит в себе сведения о дополнительных расширениях, которые могут использоваться при отображении значка, контекстного меню или диалога свойств для файлов данного расширения. Эти расширения реализованы в системе с помощью ActiveX-объектов, но о них мы поговорим чуть позже — когда будем рассматривать ветвь реестра, содержащую сведения обо всех установленных на компьютере ActiveX-объектах.

В зависимости от назначения ActiveX-объекта, его описание должно находиться в одном из дочерних подразделов нашего раздела SHELLEX. Например, в подразделе PROPERTYSHEETHANDLERS хранятся дополнительные вкладки для диалога СВОЙСТВА файлов данного расширения. В подразделе CONTEXTMENUHANDLERS определяются дополнительные команды контекстного меню, использующие для своей работы ActiveX-объекты. В подразделе DROPHANDLER определяется обработчик для операций drag`n`drop, выполняемых с файлами соответствующего расширения. А в подразделе ICONHANDLER содержаться сведения об обработчиках значков, которые будут отображать соответствующий значок в диалоге свойств или вместо стандартного значка файла.

Независимо от того, какой подраздел используется для описания расширения ActiveX файла, содержимое этого подраздела должно быть представлено в одной из следующих форм.

  • либо с помощью набора подразделов, названных в честь соответствующих CLSID-номеров ActiveX-объектов (один подраздел — описание одного расширения).
  • либо с помощью набора подразделов, название которых не имеет значения. В этом случае параметры по умолчанию данных подразделов должны содержать значения, названные в честь соответствующих CLSID-номеров ActiveX-объектов (один подраздел — описание одного расширения).

Продолжение следует

Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=109

В избранное