Хитрости Windows 7: для профессионалов | страница 139
Текст, который появляется в контекстном меню, определяется в значении раздела действия (Поумолчанию); если значение пусто, Проводник использует имя раздела (например, Открыть (Open)). К сожалению, в Windows 7 есть две соревнующиеся системы, которые определяют действия по умолчанию для типов файлов; для получения подробной информации см. врезку «Зло переопределения UserChoice» на с." 169.
Рис 3.17. Окно Задать сопоставления (Set Associations window) доступное из Панели управления Программы по умолчанию ► Сопоставление типа файла или протокола с программой (Default Programs ► Associate a file type or protocol with a program) — не показывает ничего хорошего
Скажем, вы щелкаете правой кнопкой на документе Microsoft Excel (.xlsx-файл), и в верхней части меню, которое появляется, вы видите Открыть (Open), Новый (New), и Печать (Print). Если вы откроете реестр, вы увидите, что HKEY_CLASSES_ROOT\. xlsx указывает на HKEY_CLASSES_ROOT\Excel. Sheet. 12. Перейдите к HKEY_CLASSES_ROOT \ Excel.Sheet. 12\Shell. Внутри раздела Shell вы увидите три подраздела — вы так и думали — New. Open, и Print Добавьте новый подраздел в Shell, сопровождаемый коротко описанными подразделами, и вы получите новую запись в контекстном меню для всех файлов выбранного типа.
ЗЛО ПЕРЕОПРЕДЕЛЕНИЯ USERCHOICE
Если вы щелкаете правой кнопкой на файле, выбираете Открыть с помощью (Орел With) и затем выбираете приложение по умолчанию ~ или если вы используете окно Задать сопоставления (Set Associations), показанное на рис. 3.17, - Windows фактически не изменяет тип файла. Вместо этого Windows добавляет новый раздел для расширения файла в HKEY_CURRENT_USER\Software\Microsoft \Windows\CurrentVersion\ Explorer\FileExts и затем в этом новом разделе добавляет раздел UserChoice с полным путем программы, которую вы выбрали:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ FileExts\. wav\UserChoice
Раздел UserChoice должен препятствовать тому, чтобы приложения изменили значения по умолчанию без вашего разрешения; пока раздел UserChoice существует, Windows игнорирует все действия, определенные в обычном разделе типа файла. Любые обычные действия контекстного меню исчезают, и даже значок заменяется значком вновь выбранного приложения.
Как и многие другие заплаточные функции в Windows, система UserChoice работает не совсем хорошо. Во-первых, у типов файлов, к которым применена UserChoice, не может быть обычных контекстных меню или значков. И старый прием переустановки приложения, чтобы восстановить его типы файлов, не будет работать, пока присутствует раздел UserChoice (если, установщик недостаточно умен, что маловероятно). Но хуже всего то, что систему невозможно победить, не углубляясь в реестр.