Вся информация об ассоциации расширения файла хранится в реестре. И если вы немного просматриваете, не очень сложно понять, как все работает. Для машинных ассоциаций все это происходит в корне HKEY_CLASSES_ROOT . Ручное редактирование этого материала дает вам максимальную власть над расширениями файлов (хотя и утомительно). Просто создайте резервную копию на случай, если вы все испортите и захотите вернуться.
У каждой ассоциации файлов есть подраздел с именем .xyz, где xyz - это расширение вашего файла. Значение (по умолчанию) для этого ключа установлено на произвольную строку. Большинство приложений, которые регистрируют расширения файлов, устанавливают что-то удобочитаемое человеком. Например, .pdf в моей системе имеет значение FoxitReader.Document . В этом ключе может быть много других значений, но нет ничего обязательного, кроме значения (по умолчанию).
Для какого бы значения (по умолчанию) ни было установлено, в корне HKEY_CLASSES_ROOT будет соответствующий подключ с таким же именем. Значение (по умолчанию) этого ключа по сути является «понятным именем» типа файла. Этот ключ также может иметь много подразделов, но нам интересны только DefaultIcon и Shell .
DefaultIcon, как вы, наверное, догадались, управляет значком для этого типа файлов. Значение (по умолчанию) для этого ключа должно быть равно пути файла значка. Или, если значок находится в файле .exe, задайте для него путь к файлу .exe и включите запятую и индекс значка в конце пути. Например, FoxitReader.Document DefaultIcon установлен в
C:\PROGRA~1\FOXITS~1\FOXITR~1\FOXITR~1.EXE,1
Оболочка - это место, где вы настраиваете все «действия» для этого типа файлов. Для каждого действия, которое вы хотите определить, создайте подраздел, который будет называться как угодно. У большинства типов есть по крайней мере одно действие, называемое открытым . В подразделе этого нового действия создайте подраздел с именем Command . Значение (по умолчанию) этого командного ключа - это, в основном, командная строка, которая запускается при щелчке / запуске этого действия. Например, команда open в FoxitReader.Document имеет вид
"C:\PROGRA~1\FOXITS~1\FOXITR~1\FOXITR~1.EXE" "%1"
В качестве аргумента "% 1" указывается путь к файлу, из которого вы выполнили действие.
Если у вас есть только одно действие, определенное для данного типа файла, я полагаю, что это будет действие по умолчанию, которое запускается при двойном щелчке файла. Если существует несколько возможных действий, вы можете указать, какое из них будет использоваться по умолчанию, изменив (по умолчанию) значение ключа оболочки . Просто установите для него имя действия, которое вы хотите использовать по умолчанию.
С учетом всего сказанного, не очень эффективно делать все это с нуля. Вероятно, проще использовать встроенные инструменты, чтобы пройти большую часть пути, а затем просто настроить то, что инструменты не позволяют вам сделать. Я также должен упомянуть, что вся эта информация основана на XP, но я почти уверен, что ничего не изменилось для Vista или Win7.