7

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

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

Первая попытка

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

Вторая попытка

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

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

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

Есть идеи?

5 ответов5

5

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

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

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

4

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

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

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

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

РЕДАКТИРОВАТЬ: похоже, что реестр Windows 10 имеет отдельные записи для каждого приложения, поэтому, например, я хотел изменить свой Notepad++ .ico, поэтому я нашел запись HKEY_CLASSES_ROOT\Notepad++_file и изменил существующий путь DefaultIcon. Забыл добавить это. Это один из комментариев  

1

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

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

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

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

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

0

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

Например:

Сделайте .md указанием на sublime_md

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

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

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

HKCR\sublime_txt\DefaultIcon Установить значение по умолчанию для "путь:\texticon.dll"

HKCR\sublime_md\DefaultIcon Установить значение по умолчанию "путь:\mdicon.dll"

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

Windows Registry Editor Version 5.00

;For .md extension
;-----------------
[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\sublime_md\shell\open\command]
@="c:\\sublime.exe %1"


;For taskpaper extension
;-----------------------
[HKEY_CLASSES_ROOT\.taskpaper]
@="sublime_task"

[HKEY_CLASSES_ROOT\sublime_task\DefaultIcon]
@="c:\\taskicon.dll"

[HKEY_CLASSES_ROOT\sublime_task\shell\open]
@="Open"

[HKEY_CLASSES_ROOT\sublime_task\shell\open\command]
@="c:\\sublime.exe %1"
-1

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

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

HKEY_CLASSES_ROOT>.pdf>
      (Default) = pdf_auto_file   [Locate this program name for step 2]
      DefaultIcon       [added this key to the .pdf]
         (Default) = C:\Windows\system32\shell32.dll,75 [set the value of DefaultIcon]


HKEY_CLASSES_ROOT>
   pdf_auto_file>
      DefaultIcon       [add the DefaultIcon key to pdf_auto_file]
         (Default) = C:\Windows\system32\shell32.dll,75  [set the value of DefaultIcon]

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .