Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > Ассоциация расширения в XP


Автор: mDanilov 12.9.2011, 15:19
Суть задачи:
Написанная программа должна проверить наличие ассоциации между собственно самой программой и расширением *.jpg
Если ассоциации нет, то по желанию пользователя, создаются соответствующие изменения в реестре.

При этом, если пользователь хочет поменять ассоциацию, то нехитрым способом (открыть с помощью->Выбрать программу->Использовать для всех типов), файлы расширения *.jpg открываются снова с помощью, скажем ACDSee или стандартного просмотрщика 

Суть проблемы:
1) Если вообще забыть про мою программу, то где именно в реестре хранится информация о том, что файлы расширения *.jpg открываются с помощью ACDSee или стандартного просмотрщика. Причем, чтоб можно было поменять вышеуказанным нехитрым способом и увидеть в ветке реестра изменения.
2) Статьи читал, про HKCR\.jpg\shell\open\command знаю,  но только там чет ничего не меняется
Спасибо

Автор: 01MDM 13.9.2011, 18:17
Цитата

 но только там чет ничего не меняется

Многие программы при установке задают вопрос "Кто будет пользоваться? Только ты или все?", и это правильно, при выборе "Только Я", они устанавливают ассоциации в пользовательском контексте, т.е в HKCU\Software\Classes, кстати запись в пользовательский контекст имеет приоритет перед записью в системный.

Автор: mDanilov 13.9.2011, 20:12
Например с jpg'ом нашел тут:
reg = HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpeg.
Там указывается progId и приложение. Однако если добавить Application c нужным значением имени, то .jpg будет открываться указанным приложением(например моей прогрой). Однако этого мало. При изменении данных только в reg не меняеются например иконки, привязанные к расширению, как я успел заметить. Но основные изменения происходят там. Их можно заметить, меняя через (Открыть с помощью->использовать для всех)

Еще вопрос: Имеет ли значение в каком порядке расположены имена со значениями в разделе реестра? Если в reg добавить еще имена, то открываться будет через последнюю указанную программу

Автор: 01MDM 13.9.2011, 21:37
Перелогинься и все будет ОК, hkcu полностью висит в памяти, а запись идет в ntuser.dat, по этому надо снова его загрузить, если ничего не путаю. А вообще для этого есть утилиты командной строки:
Код

assoc /?
ftype /?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)