Accueil > Apparence et Personnalisation, Astuces & tutoriels > Personnaliser les icônes “Périphériques et Imprimantes” dans Windows 7

Personnaliser les icônes “Périphériques et Imprimantes” dans Windows 7

07/02/2011

Tutoriel établi par juggler_7

Vous l’aurez surement remarqué Windows 7 propose des icônes haute-résolution dans la fenêtre « Périphériques et Imprimantes » et certains d’entre eux sont mis à jour automatiquement avec des icônes fournis par les fabricants de matériel.

C’est souvent le cas pour les périphériques récents et qui disposent d’un bon suivi. Mais pour les périphériques un peu moins courants ou tout simplement si l’éditeur a eu la flemme on se retrouve avec les icones par défauts. On peut pas dire que ce soit le pied.

Le but c’est de personnaliser les icones et la description des périphériques en fonction de chaque périphérique. Il faut donc trouver une méthode qui puisse lier ces information à l’identifiant matériel du périphérique.

Windows 7 (et Vista aussi probablement) utilisent des fichiers de métadonnées qui permettent de spécifier le fabricant, le modèle, le nom et l’icône des périphériques. Ce sont ces informations qui seront affichées dans la fenêtre « Périphériques et Imprimantes ».

La bonne nouvelle c’est que ces fichiers de métadonnées sont en XML, du coup nous avons uniquement besoin d’un éditeur de texte (comme le bloc-notes) pour les modifier. La mauvaise c’est que la procédure ne s’arrête pas là, qu’elle est assez longue et relativement fastidieuse. Il faudra également générer des fichiers CAB pour contenir nos fichiers personnalisés. Donc il nous faut aussi un programme spécifique pour les générer.

Programmes nécessaires pour ce tutoriel

  • Windows 7
  • Bloc-notes

Informations à préparer

Avant de commencer il faut préparer quelques informations qui nous seront utiles plus tard. Mettez-les de côté dans un fichier texte ou un tableau Excel, elles resserviront dans la procédure.

1. le Numéro d’identification du matériel :

Il s’agit d’identifiants propre à chaque périphérique matériel. Pour les afficher :

  • aller dans la fenêtre Périphérique et Imprimante
  • clic-droit sur le périphérique, choisir propriétés
  • aller dans l’onglet matériel, puis cliquez sur le bouton propriétés
  • aller dans l’onglet détails, choisir la propriété Numéros d’identification du matériel

Les numéros d’identification sont rangé par ordre de précision, du plus précis au plus général. Le numéro qui nous intéresse est le premier et dans certains cas le second. Ce sont eux qui identifient de manière précise le périphérique connecté à l’ordinateur.

Par exemple voici les numéros d’identification de mon clavier :

  • HID\VID_046D&PID_C318&REV_5501&MI_00
  • HID\VID_046D&PID_C318&MI_00
  • HID_DEVICE_SYSTEM_KEYBOARD
  • HID_DEVICE_UP:0001_U:0006
  • HID_DEVICE

Le premier me donne la révision précise du matériel, le second est un identifiant plus général qui ne tiens pas compte de la révision. Après ce sont des numéros qui servent d’identifiant par défaut, ils ne nous sont pas utiles.

Autre exemples de numéros d’identification :

  • un écran > MONITOR\SAM05CC
  • un shuttle > USB\VID_0B33&PID_0030&REV_0117
  • un téléphone > USBSTOR\DiskHTC_____Android_Phone___0100

2. Identifier la catégorie du périphérique :

Microsoft a mis en ligne un document qui précise l’ensemble des fonctionnalités proposées par leur système de métadonnées (voir leur document). Vous trouverez la liste des catégories disponibles dans les annexes (appendix en anglais).

Voici quelques exemples concrets :

  • pour une souris > catégorie Input.Mouse
  • pour un écran LCD > catégorie Display.Monitor.LCD
  • pour un écran TV Plasma > catégorie Display.TV.Plasma
  • un lecteur de cartes tout en un > catégorie Storage.CardReader

N’hésitez pas à parcourir la liste fournie par Microsoft, elle est très complète. Une bonne identification de votre matériel permettra à Windows de proposer les tâches par défaut propre à chaque type de périphérique.

3. Et pour l’icône de l’ordinateur ?

Si vous voulez modifier les informations pour l’ordinateur vous aurez besoin d’un programme supplémentaire de Microsoft. L’exécutable est distribué gratuitement dans le Windows Driver Kit et se nomme ComputerHardwareIds.exe. Pensez à choisir la bonne version (32 bits, amd64 ou ia64 bits).

Si vous lancez ce programme dans l’invite de commande cela affichera les identifiants matériel de l’ordinateur. Recopiez le GUID indiqué par « Manufacturer + ProductName » et utilisez-le comme paramètre de <HardwareID> dans PackageInfo.xml.

<HardwareID>DOID:ComputerMetadata\{818c5196-34d5-5867-aa79-66c90e03c71b}</HardwareID>

Générer un package devicemetadata-ms

C’est une procédure assez simple mais un peu longue. Il faut rester bien concentré et de préférence avoir une bonne connaissance de l’informatique (ça peut toujours servir pour pas avoir l’impression de lire un tutoriel en chinois).

1. préparer une structure des métadonnées :

Pour plus de facilité vous pouvez télécharger cet exemple et le décompresser. Il s’agit d’un package que j’ai réalisé pour l’écran Samsung SyncMaster P2450H.

Le répertoire « myDevice » contient la structure des métadonnées et les fichiers XML qui correspondent :

  • le fichier PackageInfo.xml qui décrit le contenu du package.
  • Le répertoire DeviceInformation qui contient les infos propre au périphérique
  • DeviceInfo.xml qui décrit les infos propres au périphérique
  • un fichier ICO qui représente le périphérique
  • le répertoire WindowsInformation qui contient les infos pour Windows
  • WindowsInfo.xml qui décrit les actions par défaut pour ce périphérique

Vous pouvez renommer le répertoire myDevice pour plus de clarté mais ce n’est pas obligatoire. L’essentiel des modifications se passent dans les fichiers XML.

2. modifier les fichiers XML

Maintenant que nous avons la structure il faut modifier les informations contenues dans les fichiers XML. Il y a trois fichiers mais seulement deux nous seront utiles : PackageInfo.xml et DeviceInfo.xml. Le fichier WindowsInfo.xml est standard donc pas la peine de le modifier.

2.1 modifier PackageInfo.xml

Voici le fichier PackageInfo.xml, c’est ici que nous allons indiquer les numéros d’identification que nous avons récupéré auparavant. Il peut y avoir plusieurs HardwareID pour un même package.

<?xml version= »1.0″ encoding= »utf-8″ standalone= »yes »?>

<PackageInfo xmlns= »http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/ »>

<MetadataKey>

<HardwareIDList>

<HardwareID>DOID:MONITOR\SAM05CC</HardwareID>

</HardwareIDList>

<Locale default= »false »>fr-FR</Locale>

<LastModifiedDate>2011-01-01T00:00:00Z</LastModifiedDate>

</MetadataKey>

<PackageStructure>

<Metadata MetadataID= »http://schemas.microsoft.com/windows/DeviceMetadata/PackageInfo/2007/11/ »>PackageInfo.xml</Metadata>

<Metadata MetadataID= »http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/ »>DeviceInformation</Metadata>

<Metadata MetadataID= »http://schemas.microsoft.com/windows/DeviceMetadata/WindowsInfo/2007/11/ »>WindowsInformation</Metadata>

</PackageStructure>

</PackageInfo>

Vous remarquerez que le numéro d’identification doit commencer par DOID: il faut aussi remplacer l’esperluette (&) par le code XHTML &amp; voici quelques exemples :

  • <HardwareID>DOID: MONITOR\SAM05CC</HardwareID>
  • <HardwareID>DOID:USB\VID_0B33&amp;PID_0030&amp;REV_0117</HardwareID>
  • <HardwareID>DOID: USBSTOR\DiskHTC_____Android_Phone___0100</HardwareID>

2.2 modifier DeviceInfo.xml

<?xml version= »1.0″ encoding= »utf-8″ standalone= »yes »?>

<DeviceInfo xmlns= »http://schemas.microsoft.com/windows/DeviceMetadata/DeviceInfo/2007/11/ »>

<DeviceCategoryList>

<DeviceCategory>Display.Monitor.LCD</DeviceCategory>

</DeviceCategoryList>

<ModelName>SyncMaster P2450H</ModelName>

<DeviceDescription1>Ecran LCD 24″</DeviceDescription1>

<Manufacturer>Samsung</Manufacturer>

<DeviceIconFile>P2450H.ico</DeviceIconFile>

</DeviceInfo>

C’est ici que nous allons décrire notre périphérique. En premier lieu il convient de préciser la catégorie de celui-ci (une info que vous devez avoir mis de coté si vous avez bien suivi ce tutoriel). Ensuit c’est assez simple <ModelName> contient le nom du périphérique, c’est l’info qui sera affichée sous l’icône. <DeviceDescription1> donne des infos supplémentaire qui s’affiche dans les infos détaillées. <Manufacturer> indique le fabricant, utilisé comme critère de regroupement par Windows. Et enfin <DeviceIconFile> qui comme son nom l’indique pointe vers le fichier icône de notre package.

3. créer un icône pour votre périphérique

Je ne prendrais pas la peine de détailler trop la création de l’icône. Une bonne recherche sur Google/image devrait vous donner une bonne base. Une petite préparation dans GIMP ou Photoshop pour détourer l’objet et gérer la transparence. On exporte en PNG puis on importe dans Axialis Icon Workshop, par exemple, qui se chargera de faire les déclinaisons en RGB/A.

Enregistrez le fichier ICO obtenu dans le répertoire DeviceInformation et n’oubliez pas de modifier la propriété <DeviceIconFile> dans DeviceInfo.xml en fonction du nom que vous aurez choisi.

4.- Create the devicemetadata-ms package

Pour créer le package au format CAB il va falloir utiliser l’utilitaire cabarc.exe de Microsoft depuis l’invite de commande. Voici la nomanclature générale de la commande :

Cabarc.exe -r -p -P myDevice\ N [GUID].devicemetadata-ms myDevice\*.*

Mais si vous avez la flemme j’ai créer un fichier go.bat qui execute la commande pour vous. La seule chose que vous avez c’est de lui indiquer un GUID pour nommer le fichier. GUID que vous êtes censé avoir préparé au tout début de ce tutoriel. Si vous ne l’avez pas encore fait est bien c’est le moment.

Pour indiquer le GUID il faut modifier le fichier go.bat avec un éditeur de texte et remplacer [votre GUID] par le GUID que vous aurez généré. Une fois lancée la commande va créer un fichier DEVICEMETADATA-MS qui contiendra les métadonnées de votre périphérique. Il s’agit en fait d’un fichier CAB avec une extension alternative.

5. installez le package devicemetadata-ms

Pour installer le package il suffit de copier le fichier DEVICEMETADATA-MS obtenu dans le répertoire suivant (attention il s’agit d’un répertoire caché) :

C:\ProgramData\Microsoft\Windows\DeviceMetadataStore\fr-fr

Le sous répertoire fr-fr dépend de la langue de votre système d’exploitation.

Et voila quand vous ouvrirez votre périphérique dispose désormais d’une belle description et d’une belle icône dans la fenêtre « Périphérique et Imprimante ». Si jamais vos modifications n’apparaissent pas, commencez par rafraichir l’affichage de la fenêtre avec F5, puis essayer de déconnecter et reconnecter l’appareil.

Si les changements ne sont toujours pas pris en compte vérifiez bien le HardwareID que vous avez indiqué dans les fichiers XML (une esperluette oubliée, un O à la place d’un 0) ainsi que les caractères utilisé dans vos description (&sup2; par exemple n’est pas reconnu).

6. problèmes éventuels

Si les choses tournent mal ou que vous vous êtes trompé d’icône ou de description, ne paniquez pas ça peux s’arranger. Il suffit de faire les corrections dans les fichiers XML, de regénérer le package et de remplacer l’ancien package devicemetadata-ms par le nouveau dans le répertoire DeviceMetadataStore.

Dans le pire des cas il suffit de supprimer le cache local pour forcer le système à recharger les données contenu de le répertoire DeviceMetadataStore. Le cache est situé dans le répertoire %LocalAppData%\Microsoft\DeviceMetadata\.

Conclusion

Et voilà, j’espère vous aurez pu suivre ce tutoriel pas à pas. N’hésitez pas à envoyer vos commentaires et à partager vos créations.

Références

Suivre le fil de discussion

Un grand merci à juggler_7

Des commentaires ou Besoin d’aide ?  Rendez-vous sur Forum-Seven

Les commentaires sont fermés.
Développement photo - Favorisxp.com