Прежде чем мы начнем изучать новые параметры, я хочу познакомить вас с двумя вещами, которые пригодятся в дальнейшем: получение разрешения на изменение параметров и просмотр значков, зашитых в файлы.
Как получить разрешение на изменение параметров
Если работа с разделом HKEY_LOCAL_MACHINE не представляет трудностей и ничем не отличается от работы с разделом HKEY_CURRENT_USER , то с разделом HKEY_CLASS_ROOT дело обстоит несколько иначе. Данный раздел имеет повышенные требования к безопасности, так как содержит параметры, используемые системой. Любое некорректное вмешательство в него может привести к краху Windows 7. Поэтому, даже если вы запустили редактор реестра с правами администратора, все равно по умолчанию не сможете поменять значения в данном разделе. Давайте сначала проверим это утверждение. Запустите редактор реестра обычным способом и выберите раздел HKEY_CLASS_ROOT . Теперь возьмем для опыта какой-нибудь подраздел и попробуем поменять в нем параметр. К примеру, возьмем раздел HKEY_CLASSES_ROOTCLSID{323CA680-C24D-4099-B94D-446DD2D7249E}ShellFolder . Там находится параметр Attributes-типа DWORD . Попробуем поменять у него значение на любое другое. Как только вы это сделаете и щелкните на кнопке OK, чтобы применить изменения, получите сообщение об ошибке при записи нового значения (рис. 4.1).
Рис. 4.1. Сообщение об ошибке при записи нового значения в реестре
Вы увидели в действии защиту от несанкционированного вмешательства в реестр. Чтобы получить возможность поменять значение для параметра, нужно вначале получить соответствующие права на запись. Возвращаемся снова к разделу ShellFolder . Сначала убедитесь, что раздел выбран, затем в меню редактора реестра выберите команды Правка ► Разрешения... . На экране появится диалоговое окно Разрешения для группы ShellFolder (рис. 4.2), в котором можно задавать новые разрешения в пределах ваших прав, предоставляемых системой.
Рис. 4.2. Диалоговое окно для установки разрешений
В области Группы и пользователи нужно выделить строчку Administrators и в области Разрешения для группы Administrators поставить флажок напротив пункта Полный доступ (рис. 4.3). После подтверждения своих действий кнопкой OK вы сможете поменять значение у параметра Attributes . Настоятельно рекомендую после каждого изменения параметра в реестре восстановить прежние права на раздел. Тем самым вы обезопасите свою систему от разрушительных действий вирусов, которые могут повредить компьютер, имея ваши расширенные права. Не забывайте об этом, пожалуйста.
Рис. 4.3. Установка полного доступа к разделу реестра
В этой главе нам часто придется иметь дело с параметрами, которые оперируют со значками. Нужно отметить, что в реестре существует два способа доступа к значкам.
Первый способ – традиционный. Всем вам знакомы значки, которые хранятся в файле с расширением ICO . Их можно найти на компьютере, а также скачать из Интернета.
Но существует и другой способ хранения значков – в ресурсах определенных файлов. Исполняемые файлы ( EXE ), компоненты панели управления ( CPL ) и динамические библиотеки ( DLL ) могут содержать в себе десятки, а то и сотни значков.
В дальнейшем мы увидим, что многие параметры в реестре обращаются именно к таким значкам. У каждого значка, заключенного в файл, имеется свой номер-идентификатор. Обычными средствами системы невозможно посмотреть на содержимое файла и увидеть спрятанные в нем значки.
Поэтому я рекомендую вам скачать бесплатную программу IconViewer , которая доступна по адресу http://www.botproductions.com/iconview/iconview.html .
После несложного процесса установки программы на диск, у вас в руках появится очень удобный инструмент для работы с встроенными значками. Теперь у всех файлов, которые могут содержать значки, в свойствах файла появится новая вкладка Icons .
Давайте рассмотрим это на конкретном примере. Найдите на вашем компьютере файл imageres.dll, который находится в папке C:WindowsSystem32 . Щелкните на файле правой кнопкой мыши для вызова контекстного меню и выберите пункт Свойства . В диалоговом окне перейдите на вкладку Icons (рис. 4.4).
Перед вами предстанет весь список имеющихся значков, которые хранятся в файле. Обратите внимание, что каждый значок имеет свой номер, который начинается с символа решетки ( # ). Этот символ не является частью номера значка и его не нужно использовать в параметрах реестра.
При выделении значка из представленного списка в нижней части вкладки его можно просмотреть в разных размерах, которые доступны в системе. Также имеется окно предварительного просмотра значка ( Preview ).
Рис. 4.4. Вкладка Icons в свойствах файлов
Изучаем раздел HKEY_CLASSES_ROOT
Для того чтобы стать настоящим специалистом по работе с реестром, необходимо свободно разбираться в структуре раздела HKEY_CLASSES_ROOT . Почему это так важно? А потому, что именно здесь сосредоточена основная информация, которую система использует при работе с файлами. Вы щелкаете в Проводнике на каком-нибудь документе, и Windows запускает программу, которая связана с этим документом. Расширения файлов, их связи с программами, вывод на печать, значки для зарегистрированных типов документов и многое другое – все это хранится в разделе HKEY_CLASSES_ROOT . Не случайно данный раздел по умолчанию закрыт для редактирования, чтобы не повредить систему непродуманными дейст виями.
Структура раздела HKEY_CLASSES_ROOT
Типы файлов и их связи с программами определяются системой, которая считывает информацию с раздела HKEY_CLASSES_ROOT . Множество типов файлов уже зарегистрировано в системе во время установки операционной системы, такие, как BMP, TXT, HTM. Некоторые типы файлов появляются в реестре во время установки новых приложений от сторонних производителей. Например, при установке архиватора WinRAR в системе появляются ассоциации с файлами RAR, а после установки PhotoShop – с файлами PSD. После установки Visual Studio операционная система начинает распознавать множество самых разных файлов – CPP, CS, VB, SLN и т. д. Вы тоже можете придумать свое расширение для файла и зарегистрировать его в Windows. Причем сделать это довольно легко, и после прочтения этой главы вы без проблем сможете создавать свои типы файлов.
Каждому зарегистрированному типу файлов соответствуют два подраздела в разделе HKEY_CLASSES_ROOT . Имя первого подраздела соответствует расширению файла и содержит идентификатор ( name_ID ).
Рассмотрим сказанное на примере текстового файла TXT. Запустите редактор реестра и перейдите в раздел HKEY_CLASSES_ROOT . Теперь найдите в нем раздел .txt . (рис. 4.5).
Рис. 4.5. Раздел HKEY_CLASSES_ROOT txt
Обратите внимание, что параметр по умолчанию для данного раздела содержит значение txtfile , которое является идентификатором. Таким образом, нам теперь нужно найти раздел txtfile , чтобы найди дополнительную информацию о текстовых файлах. Поэтому переходим в раздел txtfile (рис. 4.6) для дальнейшего изучения.
Рис. 4.6. Раздел HKEY_CLASSES_ROOTtxtfile
Посмотрим на значение по умолчанию. Здесь дается текстовое описание для заданного типа файлов. В моем случае это значение равно Text Document . Если у вас стоит нелокализованная версия Windows, то этот текст и будет виден в описании файла, когда пользователь подводит указатель мыши. Также мы видим здесь параметр EditFlags , о котором поговорим чуть позже.
Раздел DefaultIcon
У всех зарегистрированных типов файлов имеется подраздел
DefaultIcon . Как нетрудно догадаться из названия, здесь хранится информация о значке, который сопоставлен с текстовыми файлами. Для самопроверки можете с помощью программы IconViewer убедиться в этом. Например, для текстового файла параметр равен
%SystemRoot%system32imageres.dll,-102 . Значит, значок для текстового файла содержится в файле
imageres.dll под номером 102 (рис. 4.7).
Рис. 4.7. Раздел HKEY_CLASSES_ROOTtxtfileDefaulticon
Если вы хотите, чтобы выводился ваш собственный значок, то можете указать полный путь к вашему значку или файлу, содержащему значок.
Раздел shell
Следующий раздел, который нас интересует, – это раздел
shell . Данный раздел очень важен для системы, так как Windows именно отсюда берет информацию о том, какие действия нужно предпринимать при двойном щелчке и других операциях. Раздел shell содержит для этой цели несколько подразделов, иногда называемых
глаголами (verb). Существует несколько стандартных преопределенных глаголов:
edit, open, print, printto . Если вызвать контекстное меню у файла, то в нем могут присутствовать команды
Открыть, Печать, Изменить , которым соответствуют глаголы
open, print и
edit . Каждый подраздел-глагол в свою очередь содержит подраздел
command , который содержит командную строку в параметре по умолчанию (рис. 4.8).