Связывание расширений файлов с программой

Я понимаю, как это сделать, и я был на http://www.codeproject.com/KB/vb/VBFileAssociation.aspx раньше. Мой вопрос о том, что делает это, можно ли повернуть вспять? Что, если вы не знаете, где будет находиться ваша программа, и сейчас вы просто тестируете ее? Есть ли способ, чтобы он "нашел" вашу программу, или простой способ редактировать, где она открыта? В этом отношении, возможно ли сказать, был ли файл уже связан, это проблема, чтобы попытаться повторно связать? Наконец, как вы можете установить.ico файл, который он использует?

Спасибо за помощь, я почти ничего не знаю о реестре, и это меня смущает LOL...

1 ответ

Решение

Для краткости я использую поддельный корневой ключ. На практике заменить Hive_Key с HKEY_LOCAL_MACHINE для системных настроек по умолчанию, или HKEY_CURRENT_USER для пользовательских настроек. Любой из этих ключей может существовать или оба. Если они оба существуют, HKCU Ключ имеет приоритет.

Чтобы связать расширение с типом файла, вам нужно установить значение по умолчанию для ключа расширения (Hive_Key\Software\Classes\.ext) с выбранным типом файла, установив значение ключа по умолчанию.

Фактическая запущенная программа, а также другие сведения о типе файла находятся в типе файла. Типы файлов отмечены тем, что называется ProgID (сокращение от "Программный идентификатор", который является более легко читаемой версией Идентификатора класса). Ключи ProgID находятся в Hive_Key\Software\Classesи значение примера для этой иллюстрации может быть ext_auto_key,

ProgID может иметь значение по умолчанию, которое будет понятным описанием типа файла в Проводнике (например, "Документ Microsoft Word"). Вам нужно убедиться, что вы выбрали описание, которое легко понять пользователям.

ProgID может иметь подраздел, DefaultIcon, где хранится значок типа файла. Этот путь к значку является значением по умолчанию для этого ключа.

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

Эти пункты контекстного меню Verbs, В нашем примере глагол, открывающий файл с помощью Блокнота, будет выглядеть так:Hive_Key\Software\Classes\ext_auto_file\shell\open\command со значением по умолчанию notepad.exe %1,

Здесь вы бы указали путь к вашей программе. Если ваша программа находится в системном PATH, как, например, notepad.exe, вам не нужно указывать полный путь. В более вероятном случае вам нужно будет указать путь к вашему exe. В целях тестирования вы можете просто установить его в качестве своего каталога сборки.

Вы спросили, как проверить этот материал, и это можно сделать, сначала проверив значение по умолчанию ключа расширения, чтобы получить ProgID, а затем проверив shell подраздел ключа ProgID, чтобы получить глагол по умолчанию, а затем проверить \shell\verb\command чтобы получить путь к запущенной программе.

Это может быть поучительно, чтобы открыть regedit.exe и просмотрите эти ключи реестра для других типов файлов, чтобы лучше понять, как все это работает.

Кроме того, все вышесказанное является действительным, если конкретное расширение не контролируется программой, установленной по умолчанию (Программы по умолчанию) на панели управления. Вы можете проверить этот статус, проверив наличие ключа HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\FileExts\.EXT\UserChoice, Если это так, вам нужно отменить элемент управления "Программы по умолчанию", прежде чем ваши настройки вступят в силу. Это можно сделать, удалив UserChoice подключ.

Другие вопросы по тегам