Как изменить иконку для одного файла определенного типа?

Я знаю, как изменить значок для всего типа файла, используя ассоциацию реестра и типа файла. Я также знаю, как изменить значок для отдельной папки с помощью файла desktop.ini.

Мои вопросы: можно ли изменить значок для одного конкретного файла , скажем, файла one.doc?

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

Я могу принять решение на любом языке; VB, C ++, C # — все подходит, хотя C # предпочтительнее. Спасибо


Вы можете использовать IconHandler, чтобы разрешить настройку иконок для каждого файла. Обратите внимание, что расширения оболочки не должны быть написаны в управляемом коде, поэтому предпочтительным языком здесь является C ++.

Обратите внимание также на то, что установка обработчика значков для другого типа файла приложения крайне необычна.


Я понимаю, что этот поток довольно старый. Но для пользователей, у которых меньше опыта в программировании, хорошей альтернативой является следующее.

  1. Поместите где-нибудь целевой файл.
  2. Создайте ярлык. в этот файл.
  3. Теперь вы можете изменить значок ярлыка, используя его окно свойств.

Еще одно решение. На самом деле это скорее обходной путь.

1



Как изменить значок, связанный с определенным форматом файла (и только с этим файлом format) в Windows 10?

В настоящее время я связал различные форматы текстовых файлов (.md, .txt, .taskpaper) для открытия возвышенным текстом. Это приводит к тому, что ВСЕМ из них назначается ОДИН файл значка, а именно значок возвышенного текста.

Как я могу заставить каждый формат файла иметь свой собственный уникальный файл значка (предоставленный мной)?

Измените значок, связанный с одним из типов файлов, с помощью FileManType от Nirsoft. Результат: он меняет значок для ВСЕХ типов файлов, которые открываются возвышенно (не то, что я хотел)

Теперь я попытался стать умным …

  • (1) создал ярлык возвышенного exe для каждого формата файла.
  • (2) дал каждому ярлыку свой уникальный значок, который ярлык принял
  • (3) установите программу, которая (скажем) открывает файлы .md с ее собственным специальным ярлыком и т. Д.

На этот раз она просто проигнорировала значки, содержащиеся в ярлыках и остался с возвышенным значком

Есть идеи?


Использовать редактор программ по умолчанию .

Помимо прочего, этот редактор позволяет вам заменять значок для одного типа файла, сохраняя при этом связанную программу.

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

Вы можете можно загрузить версию 2.7.2675.2253 редактора программ по умолчанию (с пятницы, 15 февраля 2013 г.) в галерее Chocolatey.

4


Вы можете обратиться к этой статье MSDN

  1. Создать вложенный ключ с именем DefaultIcon в HKEY_CLASSES_ROOT.extension

  2. Назначьте вложенному ключу DefaultIcon значение по умолчанию типа REG_SZ , который указывает полный путь к файлу, содержащему значок.

  3. Выйти и снова войти в систему

EDIT: похоже, что в реестре Windows 10 есть отдельные записи для каждого приложения, поэтому, например, я хотел изменить свой Notepad ++ .ico, поэтому я обнаружил запись HKEY_CLASSES_ROOT Notepad ++ _ file и изменил существующий путь DefaultIcon. Забыл добавить это. Это один из комментариев

5


Это довольно сложно и по очень интересным причинам.

Начиная с Windows Vista, типы файлов в основном управляются параметром «Выбор пользователя» (как видно из интерфейса FileTypesMan), который объединяет программу, значок, пункты меню и т. д. в один тип файла, например «ChromeHTML». Тогда мы могли просто создать новый тип файла и изменить параметр User Choice данного расширения файла на новый тип, но теперь все по-другому. Начиная с Windows 8, система вводит «хэш» для параметра «Выбор пользователя», который по сути представляет собой пароль, который защищает расширение файла от изменения кем-либо, кроме пользовательского интерфейса системы. Практически все инструменты управления типами файлов, включая FileTypesMan и редактор программ по умолчанию, не могут взломать этот пароль и, следовательно, не могут помочь вам изменить выбор пользователя.

Есть только одно исключение, которое я ‘ м в курсе. Это называется SetUserFTA. Автор инструмента каким-то образом перепроектировал систему и выяснил точный алгоритм, используемый для создания хэша, и, следовательно, действительно может изменить выбор пользователя для одного расширения файла, не изменяя ничего другого. Инструмент можно загрузить с

https://kolbi.cz/blog/2017/10/25/setuserfta-userchoice-hash-defeated-set-file-type-associations-per-user /

Итак, теперь все, что вам нужно сделать, это создать новый тип файла, как в старые времена, и использовать SetUserFTA для изменения расширения.

3


Если несколько расширений файлов сопоставлены с одним и тем же ProgId, будет использоваться один и тот же значок. Если вам нужны разные значки для разных типов файлов/расширений, присвойте разные имена ProgId, задав одно и то же приложение для команды «открыть».

Например:

Make .md указывает на sublime_md

Сделать .txt указателем на sublime_txt

и так далее … Это становится утомительным, только если вы создаете сотни таких пользовательских типов файлов.

И программа, назначенная для этих идентификаторов ProgId (sublime_txt, sublime_md и sublime), абсолютно одинакова, отличается только значением «DefaultIcon».

HKCR sublime_txt DefaultIconSet по умолчанию vlaue в «path: texticon.dll»

HKCR sublime_md DefaultIconSet по умолчанию vlaue в «path: mdicon.dll»

Чтобы лучше объяснить использование образец файла REG:

  Редактор реестра Windows версии 5.00; для расширения .md; ----------------- [HKEY_CLASSES_ROOT   .md] @ = "sublime_md" [HKEY_CLASSES_ROOT  sublime_md  DefaultIcon] @ = "c: \ mdicon.dll" [HKEY_CLASSES_ROOT  sublime_md  shell  open] @ = "Open" [HKEY_CLASSES_ROOT  command  open_ROOT  sublime  ] @ = "c: \  sublime.exe% 1 "; Для расширения заданий; ----------------------- [HKEY_CLASSES_ROOT  .taskpaper] @ =" sublime_task "[HKEY_CLASSES_ROOT  sublime_task   DefaultIcon] @ = "c: \ taskicon.dll" [HKEY_CLASSES_ROOT  sublime_task  shell  open] @ = "Открыть" [HKEY_CLASSES_ROOT  sublime_task  shell  open  command] @ = "c: \ sublime.exe% 1  " 

3


Я только что прошел через это и подумал, что поделюсь своим конкретным решением. Мне нравится использовать Chrome для просмотра файлов PDF, но мне не нравится, что все файлы PDF выглядят как веб-страницы Chrome или веб-страницы Edge! Я внес два изменения в реестр, хотя не считаю, что изменение реестра .pdf было необходимо.

Щелкните правой кнопкой мыши, запустите Regedit от имени администратора и добавьте два ключа, как показано ниже:

  HKEY_CLASSES_ROOT> .pdf> (по умолчанию) = pdf_auto_file [  Найдите это имя программы для шага 2] DefaultIcon [добавил этот ключ в .pdf] (по умолчанию) = C:  Windows  system32  shell32.dll, 75 [установить значение DefaultIcon] HKEY_CLASSES_ROOT> pdf_auto_file> DefaultIcon [добавить DefaultIcon  ключ к pdf_auto_file] (по умолчанию) = C:  Windows  system32  shell32.dll, 75 [установить значение DefaultIcon]  

Я использовал условно-бесплатную программу IconExplorer, чтобы найти значок мне понравился и получился правильный путь.

0

Оцените статью
clickpad.ru
Добавить комментарий