Как Vista генерирует значок для документов, связанных с моим приложением?

Мне просто нужно вставить столицы в базу данных.

5
задан Cheeso 26 February 2009 в 10:21
поделиться

1 ответ

Значки и ассоциации файлов для расширений файла перечислены в реестре. Строго говоря, HKEY_CLASSES_ROOT\.ext записи содержат тип контента, воспринятый тип и в (Default) значение является фактической ассоциацией. Например, .cs файлы имеют значение по умолчанию VisualStudio.cs.9.0 (У меня есть VS 2008). Можно проверить HKEY_CLASSES_ROOT\VisualStudio.cs.9.0 видеть фактический значок, программу и команды, связанные с этим типом файла. В частности, HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\DefaultIcon запись, которая говорит Проводник который значок показать для файлов этого типа. Это указывает на двоичный файл и идентификатор ресурса в том двоичном файле.

Когда Вы связываетесь, тип файла с программой посредством щелчка правой кнопкой-> Открывают With..., Вы не указываете значок по умолчанию, таким образом, Проводник берет значок Вашего приложения и накладывает его по универсальному значку документа.

Правильный подход должен был бы включать как часть Вашей установки соответствующие ключи реестра для соединения типа файла с приложением и значком. Точный реестр оценивает Вас, должен включать, зависят от команд, которые Вы хотите добавленный к контекстному меню для того типа файла, но по крайней мере Вы хотите команду Open. В случае .cs файлов Вы видите, что существует запись HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\Shell\Commands\Open с (Default) значение, содержащее приложение для запуска, когда команда Open вызывается. (Можно проигнорировать ddeexec часть на данный момент)

Следует иметь в виду что HKEY_CLASSES_ROOT отображенное представление двух ответвлений реестра: HKEY_CURRENT_USER\Software\Classes и HKEY_LOCAL_MACHINE\Software\Classes. Если Вы хотите, чтобы Ваша ассоциация файлов была для всех пользователей, необходимо записать в HKEY_LOCAL_MACHINE. Ваша установка должна работать как администратор, чтобы сделать это. Иначе, пытаясь записать в HKEY_CLASSES_ROOT или перестанет работать с доступом запрещен или запишет в HKEY_CURRENT_USER и сделайте ассоциацию только для текущего пользователя. (Какой из двух точно произойдет, зависит от нескольких вещей, как то, какова ОС, является ли пользователь администратором, но не поднятый и так далее),

Можно читать обо всем этом в разделе Customizing File Types (Files Associations) по MSDN. В частности, Типы файлов и Регистрирующиеся Программы с Клиентскими Программами дали бы Вам основы того, как точно сделать это.

13
ответ дан 18 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: