Использование реестра
Автор: Путевской Виктор
Windows предоставляет специальное
хранилище, называемое реестр, которое служит как централизованная база
данных конфигураций для специфичной для пользователя, приложения и компьютера
информации. Несмотря на то, что реестр не предполагает непосредственного доступа
пользователя, информация, размещенная в нем, воздействует на пользовательский
интерфейс ваших приложений. Информация реестра определяет значки, команды и
другие свойства применимые к файлам. Реестр также облегчает работу системного
администратора по управлению и поддержке конфигурационной информации,
используемой вашим приложением, и исключает излишнюю информацию, хранимую в
различных местах
Примеры записей реестра в этой статье представляют только
иерархическое взаимодействие ключей. Более подробную информацию о реестре и
формате файлов реестра смотрите в документации, включенной в
Microsoft Platform SDK
на Web-сайте MSDN Online по
адресу
http://msdn.microsoft.com/ui/guide/sdk.asp.
Приложение ни в коем случае не должно терпеть крах при
записи в реестр, поскольку записи должны существовать. Во избежание этого,
используйте функции создания при добавлении записей.
Регистрация новых типов файлов
Каждый файл, создаваемый вашей программой, даже если он
скрыт или редко используется пользователями, должен иметь зарегистрированный тип
файла. Это важно, поскольку пользователи должны понимать происхождение каждого
созданного компьютером файла. Всегда, по возможности, используйте конвенцию
типов файлов
Windows. Для других уникальных для вашего приложения
типов файла, по крайней мере, убедитесь в регистрации понятного значка и имени
типа. Если ваша программа создает файлы, которые пользователи не должны изменять,
то вы можете зарегистрировать соответствующий тип файла с опцией
NoOpen
(Не открывать), описанной в разделе «Регистрация команд» далее в этой главе.
Для каждого регистрируемого вами типа файла включите как
минимум две записи: запись для ключа расширения имени файла и запись для
идентификационного ключа типа файла (класса).
Ключ расширения имени файла
Запись расширения имени файла отображает расширение имени
файла на идентификатор типа файла. Для регистрации расширения создайте подключ в
ключе
HKEY_CLASSES_ROOT,
используя три или больше буквы (не забудьте включить точку) и установите его (ключа)
значение по умолчанию в идентификатор типа файла как показано далее:
HKEY_CLASSES_ROOT
.ext
= FileTypeIdentifier
Вы можете использовать длинное (четыре – пять символов)
расширение. Это может уменьшить возможные коллизии с другими приложениями.
Для значения идентификатора типа файла (известного также
как программный идентификатор или Prog ID),
используйте строку, однозначно идентифицирующую данный класс. Эта строка
используется внутри системы и не отображается пользователям непосредственно (за
исключением явно экспортируемых вместе со специальными утилитами реестра); таким
образом, вы можете не локализировать эту запись.
Избегайте присваивание нескольких расширений одному
идентификатору типа файла. Чтобы убедиться в том, что пользователь может
различить каждый тип файла, определите каждое расширение так, чтобы оно имело
уникальный идентификатор типа файла. Если ваше приложение использует служебные
файлы, с которыми пользователь непосредственно не взаимодействует, вам также
необходимо зарегистрировать расширение (и значок) для них, предпочтительно с
таким расширением, с которым они могут быть идентифицированы. Дополнительно
пометьте их как скрытые.
Всегда пытайтесь определить уникальные идентификаторы для
типов файлов вашего приложения и проверьте реестр во избежание случайной записи
поверх существующих записей, что может существенно сказаться на существующих
файлах пользователя. Более важно избежать регистрации расширений, конфликтующих
или переопределяющих общие расширения имен файлов, используемые системой.
Расширения имен общих файлов смотрите в Microsoft Platform
SDK на
Web-сайте MSDN Online по
адресу
http://msdn.microsoft.com/ui/guide/sdk.asp.
Если вы хотите добавить поддержку существующих типов файлов, смотрите раздел «Наследование
типов файлов» далее в этой главе.
Ключ идентификатора имени файла
Второй создаваемый вами ключ реестра для типа файла – это
ключ определения его класса (Prog ID). Используя туже
строку, которую вы использовали как идентификатор типа файла для значения
расширения, создайте ключ и присвойте имя типа как значение по умолчанию этого
ключа как показано ниже:
HKEY_CLASSES_ROOT
.ext
= FileTypeIdentifier
FileTypeIdentifier
= Type Name
Под этим ключом вы задаете свойства оболочки и
COM этого класса. Включите эту запись, даже если вы не
имеете какой-либо дополнительной информации под этим ключом; данные действия
предоставляют пользователю метку для идентификации типа файла.
Дополнительно эта запись используется для регистрации значка для типа файла.
Определите имя типа (также известное как
MainUserTypeName) как удобочитаемую форму
идентификатора типа файла или имени класса. Это имя должно передавать
пользователю имя объекта, его поведение или его возможности. Имя типа может
включать все (или некоторые) из следующих элементов:
|
Элементы имени типа файла
|
|
Элемент
|
Функция
|
|
Имя компании
|
Передает целостность продукта.
|
|
Имя приложения
|
Указывает на приложение, ответственное за
активацию объекта данных.
|
|
Тип данных
|
Указывает на базовую категорию объекта (например,
рисунок, электронная таблица или звуковой файл); не более 15 символов.
|
|
Версия
|
Различая несколько версий одного объекта, вы
сможете производить обновление.
|
|
|
Используйте капитализацию при определении имени типа. Имя
может включать не более 40 символов. Используйте следующие рекомендуемые формы:
·
Имя компании Имя приложения [Версия] Тип данных. Например,
Microsoft Excel Worksheet.
·
Имя компании–Имя приложения [Версия] Тип данных. Для тех случаев,
когда имя компании и приложения совпадают – например,
ExampleWare
2.0 Document.
·
Имя компании Имя приложения [Версия]. Когда имени приложения
достаточно для описания типа данных – например Microsoft
Graph.
Такие названия предоставляют пользователю точное описание
предназначения объекта. Поскольку имена типов предоставляются через интерфейс,
то пользователь получает представление о типе объектов и соответствующем им
поведении. Дополнительно вы можете включить краткие имена типов. Краткое имя
типа – это часть полного имени типа. Приложения, поддерживающие
COM, также включают запись краткого имени типа в реестр. Используйте
краткие имена типов во всплывающих меню и командах быстрого доступа. Например,
на Microsoft Excel Worksheet можно сослаться просто
как на «Worksheet».
Для предоставления краткого имени типа
добавьте ключ AuxUserType в
CLSID
ключе приложения (под ключом CLSID) как
показано ниже:
HKEY_CLASSES_ROOT
.ext
= FileTypeIdentifier
...
FileTypeIdentifier
= File Type Display Name
CLSID = {CLSID
identifier}
...
CLSID
{CLSID
identifier}
AuxUserType
2
= Short Type Name
Дополнительная информация.
Для получения дополнительной
информации о регистрации имен типов и другой информации, которая может быть
включена под ключом
CLSID, смотрите OLE
документацию в Microsoft Platform SDK на
Web
сайте MSDN Online по адресу
http://msdn.microsoft.com/ui/guide/sdk.asp.
Если краткое имя недоступно, поскольку строка
незарегистрирована, используйте вместо него полное имя. Для элементов управления
отображающих полное имя тип необходимо распределить свободное пространство,
включающее 40 символов. Для сравнения, при использовании кратких имен необходимо
всего лишь 15 символов.
Регистрация значков
Система использует реестр для определения того, какой
значок отображать для конкретного файла. Вы регистрируете значок для каждого
файла данных предоставляемого вашим приложением, который пользователь мог бы
легко различить. Создайте запись DefaultIcon
под созданным вами ключом идентификатора типа файла и определите ее
значение как имя файла, содержащего значок. Как правило, используется имя
выполняемого файла приложения и индекс значка внутри него. Значение индекса
соответствует ресурсу значка внутри файла. Положительное число представляет
позицию значка в файле. Отрицательное число соответствует инверсии
ID номера ресурса значка. Значок вашего приложения всегда является первым
ресурсом значка в вашем выполняемом файле. Система всегда использует первый
ресурс значка для представления выполняемых файлов. Это означает, что значение
индекса для вашего файла данных должно быть числом большим нуля, как показано
ниже:
HKEY_CLASSES_ROOT
FileTypeIdentifier
= File Type Display Name
DefaultIcon
= path [,index]
Вместо регистрации выполняемого файла приложения вы можете
зарегистрировать имя динамическо-присоединяемой библиотеки (.dll),
файла значка (.ico) или файла растра (.bmp)
для предоставления значка вашего файла данных. Если значок не существует или
незарегистрирован, то система предоставит значок, производный от значка типа
файла зарегистрированного приложения. Если доступных значков для приложения нет,
то система предоставит общий значок. Эти значки не делают ваши файлы уникально
идентифицируемыми, поэтому лучше всего разработать и зарегистрировать значки,
как для вашего приложения, так и для его файлов данных. Включите 16- и
256-цветные версии следующих размеров: 16х16 пикселей, 32х32 пикселя и 48х48
пикселей.
Дополнительная информация.
Дополнительную информацию о
разработке значков для ваших файлов вы можете получить в Главе 14, «Визуальный
дизайн».
Регистрация команд
Многие из команд, находящихся в контекстном меню значка,
включая такие команды как Отправить, Вырезать, Копировать,
Вставить,
Создать ярлык, Удалить, Переименовать и Свойства
предоставляются их контейнером – то есть содержащей их папкой или Рабочим Столом.
Но вы должны предоставить поддержку для первичных команд, также называемых «verb»,
таких как Открыть, Изменить, Воспроизвести и Печать.
Вы можете также зарегистрировать дополнительные команды, предоставляемые для
ваших типов файлов и даже команды для других типов файлов.
Чтобы добавить эти команды в ветку
HKEY_CLASSES_ROOT
вы должны зарегистрировать ключ shell и ключи
для каждой из команд, и ключ command для
каждого имени команды меню как показано ниже:
HKEY_CLASSES_ROOT
FileTypeIdentifier
= Type Name
shell
[ = default verb [,verb2 [,..]]
verb
[ = Menu Command Name]
command
= pathname [parameters]
«Verb» – это независимое от языка
имя команды. Приложения могут использовать его для программного запуска заданной
команды. Когда вы предоставляет verb’ы отличные от «open»,
«print», «find»
и «explore» вы должны предоставить имена команд
меню, локализованные для версии Windows, под которой
будет запускаться приложение. (Windows автоматически
предоставляет имена команд меню и соответствующие клавиши доступа для команд «open»,
«print», «find»
и «explore» локализованных для каждой
интернациональной версии Windows.) Для присваивания
имени команды меню
verb’у, сделайте его значение по умолчанию значением
подключа
verb’а. Например, здесь показана запись реестра для
verb’а «open»:
HKEY_CLASSES_ROOT
txtfile
= Text Document
shell
= open
command
= C:\windows\NOTEPAD.EXE /p %1
Имена команд, соответствующие verb’ам
для типа файла отображаются пользователю либо в меню Файл папки, либо в
контекстном меню значка файла. Эти команды располагаются в верхней части меню.
Порядок команд определяется порядком расположения verb’ов
в ключе
shell. Первый verb
является командой меню по умолчанию.
По умолчанию, капитализация имен команд производится в
соответствии с заданным вами формате в ключе соответствующего
verb’а. Несмотря на то, что система автоматически капитализирует
стандартные команды (Открыть,
Печать, Проводник и Найти), вы можете использовать значения
имен команд меню в различном формате капитализации. Аналогично, для установки
клавиш доступа в значения имен команд меню используется стандартная конвенция –
установка амперсанта (&) перед нужным символом. Иначе, система использует первый
символ команды, как клавишу доступа.
Для поддержки выполнения verb’а,
предоставьте путь к приложению (или строку DDE команды).
Вы можете включить переключатели командной строки. Для
путей включите параметр %1. Этот параметр является заменителем, вместо которого
система вставит имя выбранного пользователем файла.
Например, для регистрации команды
Analyze
для приложения управляющего биржевой информацией, запись реестра может выглядеть
следующим образом:
HKEY_CLASSES_ROOT
stockfile
= Stock Data
shell
= analyze
analyze
= &Analyze
command
= C:\Program Files\Stock Analysis\Stock.exe /A
Вы можете иметь различные значения для каждой команды.
Например, вы можете связать одно приложение для выполнения команды Открыть
и другое приложение для команды Печать, или использовать одно приложение
для всех команд.
Если ваш тип файл не должен открываться пользователем
зарегистрируйте его, добавив значение NoOpen
под ключом идентификации типа файла.
HKEY_CLASSES_ROOT
FileTypeIdentifier
= File Type Display Name
NoOpen =
Optional text message to display.
Если пользователь попытается открыть такой файл, система
отобразит предупреждающее сообщение. Если вы установите значение
NoOpen, система использует ваш текст для отображения в окне сообщений.
Такая маркировка файлов не предотвращает открытие файла пользователями, но
автоматически предупреждает их.
Поддержка команды New
Система поддерживает создание новых объектов в системных
контейнерах, таких как папки или Рабочий Стол. Зарегистрируйте информацию для
каждого типа файла, для которого вы хотите использовать команду Создать.
Зарегистрированные типы располагаются в команде Создать, которую система
включает в меню рабочего стола и папок, а также в диалогах Открыть и Сохранить
Как. Это предоставляет более централизованный дизайн создания данных, поскольку
пользователь может создать новый объект без поиска и запуска соответствующего
приложения.
Для регистрации включаемого типа файла создайте ключ,
использующий
FileTypeIdentifier под ключом расширения в
ветви
HKEY_ CLASSES_ROOT.
В созданном ключе создайте ключ ShellNew
как показано ниже:
HKEY_CLASSES_ROOT
.ext
= FileTypeIdentifier
FileTypeIdentifier
ShellNew
Value Name = Value
Присвойте значения записи ключа
ShellNew
в соответствии с одним из следующих четырех методов для создания файла с данным
расширением.
|
Способы поддержки команды Создать при
использовании реестра
|
|
Имя значения
|
Значение
|
Результат
|
|
NullFile
|
“ “
|
Создает новый файл заданного типа как нулевой (пустой)
файл.
|
|
Data
|
двоичные данные
|
Создает новый файл, содержащий заданные двоичные
данные.
|
|
FileName
|
путь
|
Создает новый файл, копируя заданный.
|
|
Command
|
имя файла
|
Выполняет команду.
Используйте этот способ для запуска кода своего приложения создающего
файл (например, для запуска Мастера)
|
|
|
|
|
Система также автоматически предоставляет уникальное имя
для создаваемого файла, используя зарегистрированное вами имя типа.
Когда вы используете значение
FileName, храните файл, используемый в качестве шаблона в управляемой
системой папке
Templates. Вы можете получить путь к этой папке при
помощи функции SHGetFolderPath(), используя
CSIDL_TEMPLATES (или
CSIDL_COMMON_TEMPLATES
на поддерживающей это платформе). Этот способ не нуждается в задании полностью
квалифицированного пути, который может нарушиться при перемещении пользователя с
одного компьютера на другой.
Возможность печати
Если файлы в вашем приложении являются типом, который может
быть напечатан, включите запись для verb’а «print»
в ключ shell в ветке HKEY_CLASSES_ROOT,
следуя конвенции, описанной в предыдущем разделе. При этом команда Печать
будет отображаться в контекстном меню значка и в меню Файл папки содержащей файл
при выборе пользователем значка. При щелчке пользователя на команде Печать,
система использует запись реестра для определения приложения, обеспечивающего
печать файла.
Также зарегистрируйте команду «print
to» для файлов поддерживаемых вашим приложением. Эта запись позволяет
перетащить и отпустить файл на значок принтера. Несмотря на то, что команда «print
to» не отображается в каком-либо меню, принтер включит команду
Печатать Здесь как команду по умолчанию для контекстного меню, отображаемого,
когда пользователь тащит и бросает файл на значок принтера, используя правую
кнопку мыши.
В обоих случаях это являет предпочтительным способом печати
без открытия первичного окна приложения. Один из способов сделать это –
предоставить переключатель командной строки, запускающий приложение только для
обработки операций печати (например, WordPad.exe
/p). Дополнительно можно отобразить некоторое окно для
обратной связи с пользователем, которое будет отображать сообщение о начале
печати, и если, печать идет, ее ход. Например, такой обратной связью может
служить немодальное окно сообщений, отображающее строку вида «Печатается
страница
m из n на
принтере
имя принтера» и кнопку Отменить. Также можно включить элемент
индикатор выполнения.
Поддержка информационных подсказок
Когда вы создаете новый тип файла, включите также его
описание в качестве информационной подсказки (InfoTip).
Система автоматически отобразит всплывающую подсказку с этим описанием, когда
пользователь переместит курсор над значком данного типа. Для регистрации
информационной подсказки для заданного типа добавьте значение
InfoTip в ключ расширения файла, как показано ниже:
HKEY_CLASSES_ROOT
.ext
= FileTypeIdentifier
InfoTip=Text to
display when user hovers over this file type
Вы можете также поддерживать подсказку для ярлыка программы,
который вы включите в папку Программы меню Пуск.
Чтобы сделать это, включите текст описания в поле Комментарий в
диалоге установки свойств ярлыка.
Установка других значений для типа файла
Вы можете также зарегистрировать некоторые атрибуты для
ваших типов файлов. Например, вы можете пометить ваш тип файла, как безопасно
загружаемый или предохранить файлы заданного типа от включения их в папку
Документы. Чтобы сделать это добавьте значение EditFlag
в ключ идентификатора вашего типа файла. Подробнее о значениях, которые вы
можете установить смотрите
Microsoft Platform SDK на Web-сайте
MSDN Online по адресу
http://msdn.microsoft.com/ui/guide/files.asp.
Наследование типов файлов
Если ваше приложение поддерживает типы файлов другого
приложения или общие типы файлов, которые могут быть использованы многими
приложениями, такие как текстовые или HTML файлы, то
вы можете наследовать такие типы файлов. Обычно это означает переопределение
verb’а «open» такого типа так, что когда
пользователь открывает или делает двойной щелчок на файле такого типа, система
автоматически запускает ваше приложение для открытия (и редактирования) файла.
Однако, также возможно переопределение (или добавление) других
verb’ов для отдельного типа файла.
Всегда предупреждайте пользователя при инсталляции вашего
приложения перед переопределением типа файла, предлагая пользователю выбор. Если
ваше приложение использует фоновую установку, не переопределяйте связи или
запрашивайте у пользователя подтверждение, перед тем как он запустит ваше
приложение.
Всегда сохраняйте предыдущие связи и предоставляйте опцию в
вашем интерфейсе, позволяющую пользователю восстановить предыдущие связи типа
файла. Дополнительно можно восстановить предыдущие связи автоматически, когда
пользователь деинсталлирует ваше приложение.
Помните, что в Windows 2000, если
пользователь явно изменил связи файла, система поддержит выбор пользователя,
даже если при этом будет перезаписана текущая связь.
Регистрация NoOpenWith
Если ваше приложение поддерживает только свои собственные
уникальные типы файлов или вы имеете выполняемые (.exe)
файлы, выполняющие очень специфичные функции, вы можете исключить возможность
появления этих файлов в системном диалоге «Открыть при помощи». Для
гарантии не включения вашего файла приложения, добавьте ключ для вашего
приложения в ключ
Application ветви HKEY_CLASSES_ROOT.
Затем добавьте запись NoOpenWith, как показано
ниже:
HKEY_CLASSES_ROOT
Applications
Application.Exe
NoOpenWith
Вы можете также зарегистрировать типы файлов, которые
пользователь не может открыть, добавив запись NoOpen
к ключу
Prog ID для вашего типа файла. Это особенно
удобно для тех типов файлов, которые пользователь мог бы случайно повредить при
попытке открытия. Пользователи, тем не менее, могут получить доступ к файлу,
зарегистрированному с этой установкой, используя команду
Open
With.
Регистрация информации о состоянии приложения
Используйте реестр для хранения информации о состоянии
вашего приложения. Обычно, данные, сохраняемые при этом – это информация,
которую вы могли сохранять в инициализационных (.ini)
файлах в предыдущих версиях Windows. Создайте ключи
под ключом
Software в ветвях HKEY_LOCAL_MACHINE
и HKEY_CURRENT_USER,
которые включают информацию о вашем приложении следующим образом:
HKEY_LOCAL_MACHINE
Software
CompanyName
ProductName
Version
...
HKEY_CURRENT_USER
Software
CompanyName
ProductName
Version
Храните специфичные для компьютера данные в записи вашего
приложения ветви HKEY_LOCAL_MACHINE,
и специфичные для пользователя данные в записи ветви HKEY_CURRENT
_USER. Второй ключ позволяет вам сохранить
настройки для «подгонки» вашего приложения для каждого из пользователей,
работающих на одном компьютере. Под ключом вашего приложения вы можете
определить свою собственную структуру для хранения информации. Несмотря на то,
что система все еще поддерживает инициализационные файлы для обратной
совместимости, используйте реестр везде, где это возможно для хранения
информации о состоянии вашего приложения.
Используйте эти ключи для сохранения состояния вашего
приложения во всех подходящих местах, таких как, например закрытие пользователем
первичного окна вашего приложения. В большинстве случаев, это наиболее удобно
для восстановления окна в его предыдущем состоянии, когда пользователь вновь
откроет его.
Когда пользователь выходит из системы с открытым окном
вашего приложения, вы можете дополнительно сохранить информацию в реестре, чтобы
состояние вашего приложения восстановилось, когда пользователь запустит
Windows. (Система делает это для папок.) Чтобы состояние вашего
приложения восстановилось, сохраните информацию о состоянии вашего окна и
приложения в записях реестра, когда система уведомит вас о закрытии
Windows. Сохраните информацию о состоянии в записях вашего приложения в
ветке
HKEY_CURRENT_USER
и добавьте пару «имя записи – запись» в ключ
RunOnce, соответствующий вашему приложению. Когда пользователь
перезапустит компьютер, система запустит предоставленную вами командную строку.
После запуска вашего приложения вы сможете использовать сохраненные вами данные
для восстановления состояния приложения:
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
RunOnce
file type identifier = command line
Дополнительная информация.
Используйте возможности ключей
Run
RunOnce умеренно. Одновременное взаимодействие
множества различных окон в начале сессии создает негативное впечатление
конечного у пользователя. На Windows 2000 возможна
сериализация опций
Run и RunOnce, то
есть система ждет, когда каждый процесс будет завершен перед запуском следующего.
Для получения дополнительной информации, смотрите Microsoft
Platform SDK на Web сайте
MSDN Online по адресу
http://msdn.microsoft.com/ui/guide/sdk.asp.
Если вы имеете несколько открытых экземпляров, то вы можете
включить записи для каждого экземпляра или объединить их в одну запись и
использовать переключатели командной строки, что более уместно для вашего
приложения. Например, вы можете включить записи подобные следующим:
WordPad
Document 1 = C:\Program Files\Wordpad.exe Letter to Bill /restore
WordPad Document 2
= C:\Program Files\Wordpad.exe Letter to Paul /restore
Paint = C:\Program
Files\Paint.exe Abstract.bmp Cubist.bmp
При условии, что вы предоставите корректную командную
строку, которую может обработать ваше приложение, вы можете отформатировать
запись способом, наилучшим образом, соответствующим вашему приложению.
Вы можете также включить запись
RunOnce
в ветку HKEY_LOCAL_MACHINE.
Однако, при использовании этой записи, система запустит приложение перед
запуском. Вы можете использовать эту запись для приложения, которому необходим
запрос информации от пользователя, влияющей на то, как будет запущена
Windows. Помните, что любые записи в этом месте повлияют на всех
пользователей компьютера.
Записи ключа RunOnce
автоматически удаляются из реестра после запуска системы. Следовательно, вам не
нужно удалять или обновлять эти записи, но ваше приложение всегда должно
сохранять свое состояние в реестре при выходе пользователя из системы. Система
также поддерживает ключ
Run как в ветви HKEY_CURRENT_USER,
так и в ветви HKEY_LOCAL_MACHINE.
Система запускает все приложения, соответствующие записям этого ключа после
запуска
Windows, но не удаляет эти записи из реестра. Например,
программа поиска вирусов может быть установлена для автоматического запуска
после старта системы. Вы можете также реализовать эту возможность, поместив файл
или ярлык в папку Автозагрузка. Реестр хранит расположение папки
Автозагрузка как значение записи Startup ключа
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell
Folders.
Возможности системы по восстановлению состояния приложения
зависят от возможностей приложения и его файлов с данными. Если они будут
удалены или пользователь входит через сеть, где эти файлы недоступны, то система
не сможет восстановить состояние.
Регистрация информации о пути приложения
Система поддерживает пути для приложений. Если вы
зарегистрируете путь, Windows установит переменную
среды
PATH в значение зарегистрированного пути при
старте приложения. Вы устанавливаете путь вашего приложения в ключе
AppPaths ветви HKEY_LOCAL_MACHINE.
Создайте новый ключ, используя имя выполняемого файла вашего приложения в
качестве его имени. Установите значение по умолчанию этого ключа в путь к вашему
выполняемому файлу. Система использует эту запись для нахождения расположения
вашего приложения, если это потерпит крах, то поиск будет произведен по текущему
пути – например, если пользователь выбирает команду Запустить из меню
Пуск и включил только имя приложения или если значок ярлыка не включает
установки пути. Для идентификации расположения dll-файлов,
расположенных в отдельных папках, вы можете также включить еще одну запись с
именем Path
и установить ее значение в путь к вашим dll-файлам,
как показано ниже:
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion
App Paths
Application
Executable Filename =
path
Path = path
Система автоматически обновит путь и записи по умолчанию,
если пользователь переместит или переименует выполняемый файл приложения,
используя пользовательский интерфейс системы.
Любые общесистемные разделяемые dll-файлы
необходимо регистрировать под ключом SharedDLLs
ветви HKEY_LOCAL_MACHINE.
Если файл уже существует, увеличьте индекс использования записи, как показано
ниже:
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion
SharedDLLs
file name
[= usage count index]
Более подробно об индексе использования смотрите раздел «Инсталляция»
далее в этой главе.
Добавление особенностей для типа файла
Windows предоставляет интерфейсы,
позволяющие вам добавить пункты меню или страницы свойств для некоторых типов
файлов, определить значки, специфичные для экземпляра, расширить поддержку
операций перетаскивания и отслеживать операции перемещения файлов. Однако,
используйте эти расширения оболочки благоразумно, поскольку они добавляются к
уже существующему интерфейсу пользователя. Если вы используете расширения
оболочки для расширения интерфейсов файлов, которые не создаются вашим
приложением, информируйте пользователя при инсталляции, дайте ему выбор принятия
этих изменений. Также предоставьте пользователю возможность отключить или
удалить предоставленные вами расширения.
Расширения оболочки – это COM
объекты, реализованные как dll-файлы являющиеся
внутрипроцессными серверами. Эти объекты реализуют интерфейсы, предоставляющие
функциональность расширений оболочки. Могут быть зарегистрированы следующие типы
обработчиков.
|
Типы обработчиков расширения оболочки.
|
|
Обработчик
|
Функция
|
|
Ярлык (контекст)
|
Добавляет пункты меню в контекстное меню для
конкретных типов файлов.
|
|
Обработчик операции транспортировки (drag)
|
Позволяет вам поддерживать конвенцию перемещения
OLE данных для операций транспортировки
специфичных типов файлов.
|
|
Обработчик операции отпускания (drop)
|
Позволяет вам реализовать некоторые действия, когда
пользователь отпускает объекты на некоторые типы файлов.
|
|
Обработчики нестандартных операций транспортировки
|
Обработчики контекстных меню ярлыков, которые
система вызывает, когда пользователь тащит и отпускает объекты,
используя правую кнопку мыши.
|
|
Обработчики значков
|
Добавляет значки, специфичные для экземпляра для
файловых объектов или предоставляет значки для всех файлов заданного
типа.
|
|
Обработчики страниц свойств
|
Добавляют страницы в диалог свойств, отображаемый
оболочкой для файлового объекта. Страницы могут быть специфичны для
класса файлов или для конкретного файлового объекта.
|
|
Обработчики перехвата копирования
|
Вызывается, когда папка или объект принтера
перемещается, копируется или удаляется пользователем. Обработчик может
быть использован для разрешения или предотвращения такой операции.
|
|
Экстрактор эскизов
|
Показывает ваш тип файла при просмотре эскиза и
дает возможность просмотра в элементе управления Web
View.
|
|
Обработчик детального вида
|
Добавляет дополнительные колонки при детальном
режиме отображения содержания папки.
|
|
|
|
Дополнительная информация
Более подробную информацию о
создании
COM объектов и расширениях оболочки, смотрите
COM и ActiveX документацию,
включенную в Microsoft Platform SDK на
Web сайте MSDN Online по
адресу
http://msdn.microsoft.com/ui/guide/sdk.asp.