Где в реестре хранится Windows, с помощью какой программы открываются файлы определенных типов?
После установки Adobe PDF Reader открывает файлы с .PDF
расширение файла. Открывается стандартный веб-браузер .html
файлы и блокнот открывается .txt
файлы и т. д.
Где именно в реестре хранятся эти типы файлов - программные ассоциации в реестре?
Другими словами, как Windows узнает, с каким программным обеспечением / программой она должна открывать определенный файл (тип)?
7 ответов
Все открытые ассоциации хранятся в HKEY_CLASSES_ROOT
,
Это специальный куст реестра, который объединяет ассоциации локальных пользователей в HKEY_CURRENT_USER\Software\Classes
с ассоциациями системы в HKEY_LOCAL_MACHINE\Software\Classes
,
Вот снимок из моего реестра для ассоциации PDF, которую вы упоминаете в своем вопросе:
Просто чтобы расширить ответ Гарета:
От игры с реестром это выглядит
- записи из
HKEY_CURRENT_USER\Software\Classes
переопределить записи изHKEY_LOCAL_MACHINE\Software\Classes
вHKEY_CLASSES_ROOT\Software\Classes
- установка ассоциации расширения файла из командной строки с помощью
assoc
команда действует наHKEY_LOCAL_MACHINE\Software\Classes
- установка связи типа файла из командной строки с помощью
ftype
команда действует наHKEY_LOCAL_MACHINE\Software\Classes
В текущих версиях Windows
#1 Сначала вам нужно поискатьHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[EXT]\UserChoice\ProgId
если оно существует. Если нет, перейдите к пункту №5.
#2 ProgId — это класс файла, например (=> переход к #6) или, аналогично, идентификатор приложения, например (=> переход к #3)
#3 Найдите идентификатор приложенияApplications\SciTE.exe
нравитьсяHKEY_CLASSES_ROOT\Applications\SciTE.exe\shell\open\command
. Значением по умолчанию является команда для запуска.
#4 Готово.
#5 ПоискComputer\HKEY_CLASSES_ROOT\[EXT]
значение по умолчанию для класса файла, например
#6 Найдите класс файлаPython.File
нравитьсяHKEY_CLASSES_ROOT\Python.File\shell
. Значением по умолчанию является команда по умолчанию, например (по умолчаниюopen
если он не существует).
#7 Найдите этоedit
командовать какHKEY_CLASSES_ROOT\Python.File\shell\edit\command
. Значением по умолчанию является команда для запуска. Примечание. Другие доступные команды для класса файлов отображаются в Проводнике при щелчке правой кнопкой мыши по файлу.
Примечание:HKEY_CLASSES_ROOT
присоединяется кSoftware\Classes
изHKEY_CURRENT_USER
(более высокий приоритет) иHKEY_LOCAL_MACHINE
Хотя ответы (вероятно, я не проверял) правильные, разумный способ изменить ассоциации файлов - это графический интерфейс, разработанный Microsoft для него. (То есть, если вы пользователь, а не разработчик установки.)
Вот один урок с красивыми картинками, я нашел его с помощью Google: http://www.digitalcitizen.life/how-associate-file-type-or-protocol-program
Но вы можете просто открыть старт (меню win7 или экран win8, неважно) и набрать ассоциацию файла, ввести, и она должна открыть правильную ссылку панели управления. (Панель управления \ Программы \ Программы по умолчанию \ Установить ассоциации).
Проблема многих из этих методов заключается в том, что Windows на самом деле не учитывает возможность того, что разные исполняемые файлы будут иметь одно и то же имя. При использовании графического интерфейса невозможно узнать, к какому из них они относятся.
Это потому, что в любом случае в Win 7 (Win 10 я не проверял) программа по умолчанию для проводника хранится в
Чтобы узнать, на что он на самом деле указывает, вам нужно перейти (в моем случае)
HKEY_USERS\S-1-5-21-966747605-1980359026-2421819745-1000\Software\Classes\Applications\LibreOfficeWriterPortable.exe\shell\open\command
чтобы узнать, что на самом деле откроется, т. е. на что на самом деле указывает имя, которое они используют.
В Windows 10 вы можете определить, какие расширения файлов поддерживает программа, двумя способами.
1. «Установить настройки по умолчанию для приложения»
Идти кSettings
->Defaults Apps
->Set defaults by app
. На следующей странице нажмитеmanagement
в нужном вам приложении. В этой ситуации вы можете определить ассоциации файлов, которые поддерживают приложение.
2. Найти в реестре
Перейдите в редактор реестра. И найдите записьComputer\HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications
. Эта запись реестра показывает, где каждая программа регистрирует свои ассоциации файлов. Вы можете найти значение записи по названию нужного приложения.
В моем случае я нахожу «IrfanView.exe», и его значение равноcomputer\HKEY_LOCAL_MACHINE\SOFTWARE\IrfanView\Capabilities\FileAssociations
. если перейти к его местоположению, вы можете найти результат, как показано ниже.
В моем случае я пытался открыть случайное расширение с помощью Word Pad, поэтому я сделал следующее:
- Пуск -> Выполнить -> cmd.exe
- assoc .bhf=txtfile
- Затем найдите файл с этим расширением в проводнике Windows.
- Щелкните правой кнопкой мыши -> Открыть с помощью -> Выбрать другое приложение -> Установите флажок «Всегда использовать это приложение для открытия файлов .BHF».
- Выберите программу по вашему выбору (если она не отображается, выберите «Другие приложения»/«Найти другое приложение на этом компьютере»)
В моем случае у меня не было параметров пользовательского интерфейса для выбора программы по умолчанию или флажка, пока я не выполнил команду на шаге №2. Я думаю, что как только Windows начнет думать о файле как о «текстовом» файле, я думаю, он больше не считается «слишком опасным», чтобы позволить вам связывать его по своему усмотрению...