Работа с Реестром ОС WindowsNT/2000/XP, страница 6

Наконец, зарегистрировав новый тип файла, необходимо добавить соответствующий ему пункт в подменю New (Создать) графической оболочки. Когда вы щелкаете правой кнопкой мыши в рабочем окне проводника или на рабочем столе, на экране появляется меню, одним из пунктов которого будет пункт New (Создать). При выборе этого пункта на экране появляется подменю, в котором перечисляются различные типы документов. При выборе одного из этих типов в текущем каталоге (или на рабочем столе) будет создан новый документ указанного типа.

Прежде всего, необходимо учитывать, что добавить новый тип файла в подменю New можно только в случае, если в реестре зарегистрирована команда Open, соответствующая этому типу файлов (для этого, как уже рассказывалось, в реестр следует добавить подключ shell\open). Если команда Open зарегистрирована, можно приступать к регистрации команды New.

Запись реестра, относящаяся к меню New, располагается в ключе реестра, соответствующем расширению файла, а не его типу. То есть, чтобы добавить в меню New пункт, соответствующий текстовым файлам, необходимо разместить связанную с этим запись в ключе .txt, а не в ключе txtfile. Дело в том, что система должна знать, каким разрешением должен обладать создаваемый файл. Идентифицирующей строке txtf Л е может соответствовать несколько разрешений (например, у меня на компьютере — .txt, .log, .scp и другие), поэтому, если Windows будет искать команду создания нового файла в ключе txtfile, она не сможет определить, какое из этих разрешений присвоить новому файлу. Если информация о новом файле будет размещена в ключе, соответствующем разрешению, система сможет однозначно определить разрешение нового файла.

В ключе, соответствующем разрешению, следует поместить подключ ShellNew, который может не иметь значения. Если вы хотите указать изначальное содержимое нового файла этого типа, следует разместить в ключе одну пару имя/значение.

Если имя значения будет Null File, по команде New система создаст файл указанного типа с нулевой длиной (в этом случае собственно значение, соответствующее имени Null File, можно не указывать). Если создать значение ключа с именем Data и указать в нем бинарные данные, эти данные станут изначальным содержимым нового документа. Можно также создать значение FileName и указать имя шаблонного файла, который будет скопирован в текущий каталог в качестве нового создаваемого файла под указанным вами именем. Наконец, в значении ключа Command можно указать имя программы, которая будет запущена для инициализации нового файла.

ПРОГРАММИРОВАНИЕ  в  РЕЕСТРЕ

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

Таблица 4 Перечень API функций для работы с реестром

Имя функции

Описание функции

RegCloseKey

Закрыть открытый ключ реестра

RegConnectRegistry     

Подключиться к удаленному реестру

RegCreateKeyEx          

Создать новый подключ

RegDeleteKey             

Удалить ключ

RegDeleteValue

Удалить значение

RegEnumKeyEx           

Перейти к следующему подключу (каждый раз возвращает новый ключ)

RegEnumValue            

Перейти к следующему значению (каждый раз возвращает новое значение)

RegFlushKey               

Внести значения ключа в реестр (чтобы убедиться в том, что все изменения сохранены на диске)

RegLoadKey               

Загрузить ключ из специального файла (см. также RegSaveKey)

RegOpenKeyEx            

Открыть ключ

RegQuerylnfoKey        

Запросить информацию о ключе

RegQueryValueEx        

Прочитать значение

RegReplaceKey           

Заменить ключ после перезапуска системы

RegSaveKey               

Записать ключ в файл

RegSetKeySecurity      

Установить разрешения на доступ к ключу

RegSetValueEx            

Установить значение

RegUnloadKey            

Выгрузить набор значений