web-dev-qa-db-fra.com

Comment changer l'icône associée à un format de fichier particulier (et uniquement à ce format de fichier) sous Windows 10?

Actuellement, j'ai associé différents formats de fichier texte (.md, .txt, .taskpaper) à ouvrir par du texte sublime. Il en résulte que TOUS se voient attribuer le fichier d'icône SAME, à savoir l'icône de texte sublime.

Comment puis-je obtenir que chaque format de fichier ait son propre fichier d'icône unique (fourni par moi)?

Premier essai

Modifiez l'icône associée à l'un des types de fichiers à l'aide de FileManType de Nirsoft. Le résultat: cela change l'icône pour TOUS les types de fichiers ouverts par sublime (pas ce que je voulais)

Deuxième essai

Maintenant, j'ai essayé d'être intelligent ...

  • (1) créé un raccourci du sublime exe pour chaque format de fichier
  • (2) a attribué à chaque raccourci sa propre icône unique, que le raccourci a acceptée
  • (3) configure le programme que (disons) les fichiers .md ouverts avec son propre raccourci spécial etc ...

Cette fois, il a simplement ignoré les icônes contenues dans les raccourcis et est resté avec l'icône sublime

Des idées?

9
Sam

Utiliser l'éditeur de programmes par défaut

Entre autres choses, cet éditeur vous permet de remplacer l’icône pour un seul type de fichier tout en conservant le programme associé.

Je me rends compte qu’il s’agit en fait d’une simple réponse . Cependant, je ne connais pas d’autre moyen de le faire sans modification directe du registre. Si les modifications spécifiques à effectuer vous intéressent, envisagez d'utiliser procmon de Sysinternals pour capturer l'activité du registre lors d'un changement d'icône.

5
Jens Ehrich

Vous pouvez vous référer à cet article MSDN

  1. Créez une sous-clé nommée DefaultIcon dans HKEY_CLASSES_ROOT\.extension

  2. Attribuez à la sous-clé DefaultIcon une valeur par défaut de type REG_SZ qui spécifie le chemin d'accès complet du fichier contenant l'icône.

  3. Déconnectez-vous et reconnectez-vous

EDIT: il semblerait que le registre Windows 10 comporte des entrées distinctes pour chaque application. Je voulais par exemple changer mon Notepad ++ .ico. J'ai donc trouvé l'entrée HKEY_CLASSES_ROOT\Notepad++_file et modifié l'existant. Chemin DefaultIcon. J'ai oublié d'ajouter ceci. C'est l'un des commentaires

4
Rithvik Vibhu

C'est assez difficile et pour des raisons très intéressantes.

Depuis Windows Vista, les types de fichiers sont principalement gérés par l'option "Choix de l'utilisateur" (voir l'interface de FileTypesMan), qui regroupe le programme, l'icône, les options de menu, etc. dans un type de fichier tel que "ChromeHTML". À l’époque, nous pouvions simplement créer un nouveau type de fichier et modifier l’option de choix de l’utilisateur d’une extension de fichier donnée en fonction du nouveau type, mais la situation est maintenant différente. Depuis Windows 8, le système introduit un "hachage" dans l’option Choix de l’utilisateur, qui consiste en principe en un mot de passe protégeant l’extension de fichier de toute modification par une personne autre que l’UI du système. Pratiquement tous les outils de gestion de types de fichiers, y compris FileTypesMan et Default Programs Editor, ne pouvaient pas déchiffrer ce mot de passe et ne pouvaient donc pas vous aider à modifier le choix de l'utilisateur.

À ma connaissance, il n’ya qu’une exception. C'est ce qu'on appelle SetUserFTA. L'auteur de l'outil a en quelque sorte inversé le système et découvert l'algorithme utilisé pour créer le hachage. Il peut donc modifier le choix de l'utilisateur pour une extension de fichier unique sans rien modifier d'autre. L'outil peut être téléchargé à partir de

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

Il ne vous reste donc plus qu'à créer un nouveau type de fichier comme auparavant et à utiliser SetUserFTA pour modifier l'extension.

2
Mu-Tsun Tsai

Si plusieurs extensions de fichier sont mappées sur le même ProgId, la même icône sera utilisée. Si vous avez besoin d'icônes différentes pour différents types de fichiers/extensions, attribuez différents noms ProgId, en définissant la même application pour le verbe "open".

Par exemple:

Faire un point .md à sublime_md

Faire un point .txt à sublime_txt

et ainsi de suite ... Cela ne devient fastidieux que si vous créez des centaines de types de fichiers personnalisés.

Et le programme affecté à ces ProgIds (sublime_txt, sublime_md et sublime) est exactement le même, ne différant que par la valeur "DefaultIcon".

HKCR\sublime_txt\DefaultIcon Définissez vlaue par défaut sur "chemin:\texticon.dll"

HKCR\sublime_md\DefaultIcon Définissez vlaue par défaut sur "chemin:\mdicon.dll"

Pour mieux expliquer l'utilisation d'un exemple de fichier 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
w32sh