2011-12-06 1 views
3

Я написал обработчики предварительного просмотра для нескольких пользовательских типов файлов. Эти типы файлов не имеют приложения по умолчанию, которое может их открыть. Я хочу связать значок с типами файлов в качестве знака, который является обычным.Как связать тип файла с иконкой?

Я попытался установить запись в реестре для DefaultIcon в HKCR\.<filetype>, но он не работает, даже после перезагрузки. Я делаю эти изменения реестра с C#, и изменения успешны.

Файл значка - это всего лишь файл ico, находящийся в %APPDATA%. Я планирую добавить еще несколько значков и поместить их в файл dll. Я просто хочу заставить его работать, прежде чем я сделаю следующие шаги.

Как установить этот значок?

+0

Похоже на дубликат этого: http://stackoverflow.com/questions/1203755/registering-file-type-and-custom-document-icon-in-net – Sanjamal

+0

Я уже рассмотрел этот вопрос. Кажется, он получает свои значки, сопоставляя тип файла с программой. Этого я и хочу избежать. –

ответ

4

Вот простой .REG файл, который регистрирует значок для расширения файла .tj

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\.tj] 

[HKEY_CLASSES_ROOT\.tj\DefaultIcon] 
@="D:\\scratch\\testy\\icons\\tj.ico" 

Испытано на Win7

+0

Это похоже на то, что я делаю. Существуют ли ограничения по размеру, формату? Может ли значок жить в% appdata%, если я даю полный путь? –

+1

Я считаю, что необходим полный путь, я сомневаюсь, что% appdata% будет работать, потому что это переводит на другое значение для каждого пользователя. –

+0

Как использовать этот код в C#? –

1

MSDN Эта статья объясняет, как назначить пользовательские иконки для типов файлов

+0

Это то, что я изначально следовал, чтобы попытаться заставить его работать. Что я должен вызывать из C# для выполнения функции 'SHChangeNotify'? Разве перезагрузка не будет такой же? –

+0

Должен работать. Однако для этого нужен абсолютный путь значка, как показано Джоном. Ссылки на пути, такие как% AppData%, не работают. – Bhuvan