Aller au contenu principal
HWID Checker

Comment vérifier les numéros de série HWID avec CMD et PowerShell sous Windows

Vérifiez les numéros de série HWID avec CMD et PowerShell : UUID SMBIOS, carte mère, BIOS, disque, RAM, ProcessorId du processeur, MAC et MachineGuid, avec exemples de sortie et causes de modification.

HWID Checker · 4 septembre 2026 · 23 min de lecture

Il n’existe pas de commande unique qui affiche « votre HWID ». C’est la première chose à comprendre avant d’ouvrir une fenêtre noire et de commencer à saisir des commandes. Windows ne stocke pas un identifiant matériel unique. Il expose une douzaine d’identifiants distincts — un UUID de micrologiciel, un numéro de série de carte mère, un numéro de série de BIOS, un numéro de série par disque, un par barrette de mémoire, une signature de processeur, une adresse MAC par carte réseau et quelques GUID générés par logiciel — et chaque programme qui parle de « votre HWID » sélectionne une partie de ces valeurs et les combine à sa manière.

Ainsi, lorsque quelqu’un cherche comment vérifier les numéros de série HWID dans CMD, il lui faut en réalité une liste indiquant quels numéros de série existent, la commande qui lit chacun d’eux, à quoi ressemble la sortie et ce qui fait changer la valeur. C’est précisément l’objet de ce guide. Il couvre à la fois l’Invite de commandes classique (cmd.exe) et PowerShell, car les versions actuelles de Windows nécessitent les deux : plusieurs anciennes commandes CMD reposaient sur wmic, que Microsoft a retiré des installations par défaut de Windows 11, et les solutions de remplacement prises en charge sont des cmdlets PowerShell.

Tout ce qui suit est en lecture seule. Les commandes interrogent des valeurs que Windows et votre micrologiciel exposent déjà ; rien ci-dessous ne modifie, ne rend aléatoire ni n’usurpe un identifiant. Les commandes ont été vérifiées par rapport à la documentation Microsoft pour Windows 10 22H2 et Windows 11 24H2/25H2 au 4 septembre 2026.

Réponse rapide : le tableau complet

Si vous voulez uniquement les commandes, les voici. Chaque ligne correspond à un identifiant. La colonne « CMD hérité » présente l’ancienne syntaxe wmic à titre de référence, car vous la trouverez encore dans des publications de forums ; la colonne PowerShell est celle à utiliser aujourd’hui.

IdentifiantEmplacementPowerShell (recommandé)CMD hérité (peut être absent sous Windows 11)
UUID système SMBIOSMicrologiciel de la carte mère(Get-CimInstance Win32_ComputerSystemProduct).UUIDwmic csproduct get uuid
Numéro de série systèmeMicrologiciel (OEM)(Get-CimInstance Win32_ComputerSystemProduct).IdentifyingNumberwmic csproduct get identifyingnumber
Numéro de série du BIOSMicrologiciel(Get-CimInstance Win32_BIOS).SerialNumberwmic bios get serialnumber
Numéro de série de la carte mèreTable de micrologiciel de la carte de base(Get-CimInstance Win32_BaseBoard).SerialNumberwmic baseboard get serialnumber
Numéro de série du châssisTable de micrologiciel du boîtier(Get-CimInstance Win32_SystemEnclosure).SerialNumberwmic systemenclosure get serialnumber
Numéros de série des disques physiquesMicrologiciel du disqueGet-PhysicalDisk | Select-Object FriendlyName, SerialNumberwmic diskdrive get model,serialnumber
Numéro de série du volume (non matériel)En-tête du système de fichiers(Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'").VolumeSerialNumbervol C:
Numéros de série des modules RAMPuce SPD du module DIMMGet-CimInstance Win32_PhysicalMemory | Select-Object DeviceLocator, SerialNumberwmic memorychip get devicelocator,serialnumber
ProcessorId du processeurInstruction CPUID(Get-CimInstance Win32_Processor).ProcessorIdwmic cpu get processorid
Adresses MACMicrologiciel/pilote de la carte réseauGet-NetAdapter | Select-Object Name, MacAddress, Statusgetmac /v
Numéro de série du moniteur (EDID)Micrologiciel de l’écranvoir la section sur les moniteursaucun
MachineGuidRegistre, défini à l’installation de Windows(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Cryptography').MachineGuidreg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid
ID de produit WindowsRegistre/licence(Get-CimInstance Win32_OperatingSystem).SerialNumberwmic os get serialnumber
ComputerHardwareIdsRegistre, dérivés du SMBIOS(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SystemInformation').ComputerHardwareIdsreg query "HKLM\SYSTEM\CurrentControlSet\Control\SystemInformation" /v ComputerHardwareIds

La suite de cet article examine chaque ligne : ce qu’est la valeur, à quoi ressemble un résultat normal, à quoi ressemble un résultat incorrect et quelles actions la modifient. Si vous ne devez lire qu’une seule section, lisez celle qui explique quels numéros de série composent réellement un « HWID ».

CMD ou PowerShell ? Pourquoi la même fenêtre noire utilise deux langages

cmd.exe et PowerShell sont tous deux des consoles textuelles et, sous Windows 11, ils s’ouvrent généralement dans la même application Windows Terminal. Il est donc facile de croire que leurs commandes sont interchangeables. Elles ne le sont pas.

  • cmd.exe exécute des commandes de type batch : dir, reg, vol, getmac, systeminfo et — historiquement — wmic. Il ne possède pas de pipeline d’objets ; sa sortie est du texte brut.
  • PowerShell (Windows PowerShell 5.1 est fourni avec Windows ; PowerShell 7 s’installe séparément) exécute des cmdlets comme Get-CimInstance et Get-PhysicalDisk. La sortie se compose d’objets que vous pouvez filtrer avec Select-Object.

Cette distinction est importante pour rechercher des HWID à cause de wmic.exe. Presque tous les tutoriels « vérifier votre HWID dans CMD » écrits avant 2024 utilisent wmic csproduct get uuid, wmic bios get serialnumber et d’autres commandes similaires. WMIC a été déconseillé en 2016, est devenu une « fonctionnalité à la demande » facultative désactivée par défaut dans Windows 11 24H2, puis a commencé à être entièrement supprimé. Sur une nouvelle installation de Windows 11, vous verrez généralement :

'wmic' is not recognized as an internal or external command,
operable program or batch file.

Les classes WMI sous-jacentes (Win32_BIOS, Win32_BaseBoard, etc.) sont toujours présentes. Seul l’ancien client en ligne de commande a disparu. C’est pourquoi chaque commande PowerShell de cet article utilise Get-CimInstance : elle lit les mêmes classes par l’intermédiaire de l’interface CIM prise en charge. Si vous devez conserver wmic dans un script existant, le guide de dépannage WMIC explique la migration en détail.

Vous n’avez pas besoin de quitter CMD pour utiliser des commandes PowerShell. Toute commande PowerShell sur une ligne de cet article peut être exécutée depuis l’Invite de commandes ou un fichier .bat en l’encapsulant ainsi :

powershell -NoProfile -Command "(Get-CimInstance Win32_BaseBoard).SerialNumber"

C’est exactement ainsi que fonctionne notre script BAT téléchargeable : un fichier batch en texte brut qui appelle PowerShell une fois par identifiant, afin que vous puissiez lire chaque ligne avant de l’exécuter.

Faut-il disposer des droits d’administrateur ? Pour tout ce qui figure dans cet article : non. La lecture des tables SMBIOS, des numéros de série des disques, des données SPD de la mémoire, de CPUID et des clés de registre concernées fonctionne dans une session utilisateur standard. Si une commande renvoie Access denied, vous l’exécutez presque certainement sur une machine distante ou dans le cadre d’une stratégie d’entreprise restrictive, plutôt que de rencontrer une limitation d’autorisation normale.

UUID système SMBIOS

Définition. Un identifiant de 128 bits stocké par le fabricant de la carte mère dans la table System Information du SMBIOS (type 1). C’est la valeur que l’on désigne le plus souvent lorsqu’on parle de « HWID » sans autre précision, car elle se situe au niveau du micrologiciel, résiste aux réinstallations du système d’exploitation et se lit facilement.

(Get-CimInstance Win32_ComputerSystemProduct).UUID

Sortie typique :

4C4C4544-0034-5A10-8047-B8C04F4E3232

Comment l’interpréter. Sur les machines Dell, comme dans l’exemple ci-dessus, l’UUID est en partie dérivé du numéro de service ; deux Dell ne partageront donc jamais le même. Sur de nombreuses cartes grand public, il s’agit d’une valeur aléatoire inscrite en usine. Dans tous les cas, elle n’est pas secrète — toute personne disposant d’un accès local peut la lire — et elle n’est pas chiffrée.

Résultats incorrects et leur signification.

  • 00000000-0000-0000-0000-000000000000 ou FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF — le micrologiciel n’a pas renseigné le champ. Cela arrive fréquemment sur certaines cartes bon marché, sur des machines dont la puce BIOS a été remplacée et dans certaines machines virtuelles dotées d’une configuration SMBIOS minimale.
  • 03000200-0400-0500-0006-000700080009 — valeur générique par défaut bien connue provenant d’un BIOS de référence. Elle n’est pas unique ; des milliers de cartes la renvoient.
  • Valeur vide — généralement une plateforme de virtualisation qui n’expose aucun UUID.

Ce qui la modifie. Le remplacement de la carte mère. Une mise à jour du BIOS la préserve normalement, mais une réinitialisation complète du CMOS/de la NVRAM sur certaines cartes, ou le remplacement d’une carte dans un centre de maintenance, peut en produire une nouvelle. Réinstaller Windows ne la modifie pas. Dans une machine virtuelle, l’hyperviseur la définit et le clonage d’une VM peut ou non la régénérer selon la plateforme.

Dans cette même classe, IdentifyingNumber correspond au numéro de série système OEM — la chaîne également imprimée sur l’étiquette située sous un ordinateur portable :

Get-CimInstance Win32_ComputerSystemProduct |
  Select-Object Vendor, Name, IdentifyingNumber, UUID

Numéro de série du BIOS

Définition. Le numéro de série communiqué par la table System Information du SMBIOS via la classe Win32_BIOS. Sur les PC préassemblés et les ordinateurs portables, il est presque toujours identique à la valeur IdentifyingNumber ci-dessus. Sur les ordinateurs de bureau assemblés par l’utilisateur, il correspond à ce que le fabricant de la carte a inscrit, ce qui n’est souvent d’aucune utilité.

(Get-CimInstance Win32_BIOS).SerialNumber

Sorties typiques, de la plus utile à la plus inutile :

5CG1234XYZ                    ← HP laptop, real serial
To Be Filled By O.E.M.        ← common on ASRock/ASUS retail boards
Default string                 ← common on MSI/Gigabyte retail boards
System Serial Number           ← another placeholder

Les trois dernières ne sont pas des erreurs. Les cartes mères vendues au détail sont destinées à être assemblées par un tiers ; leur fabricant laisse donc le numéro de série du « système » à renseigner par l’intégrateur — et personne ne le fait. Tout logiciel qui utilise le numéro de série du BIOS comme clé unique considère toutes ces machines comme le même ordinateur, ce qui constitue une cause réelle de faux positifs signalant un « matériel en double ».

Ce qui le modifie. Comme pour l’UUID : le remplacement de la carte. Dans des conditions normales, les mises à jour du BIOS ne le changent pas.

Numéro de série de la carte mère (carte de base)

Définition. Le numéro de série provenant de la table Baseboard du SMBIOS (type 2). Contrairement au numéro de série du BIOS/système, celui-ci est généralement renseigné sur les cartes vendues au détail, car il identifie la carte elle-même plutôt que le système assemblé.

Get-CimInstance Win32_BaseBoard |
  Select-Object Manufacturer, Product, SerialNumber

Sortie typique :

Manufacturer                 Product            SerialNumber
------------                 -------            ------------
ASUSTeK COMPUTER INC.        ROG STRIX B650-A   230412345678901

Résultats incorrects. To Be Filled By O.E.M., Default string, None ou un numéro de série composé uniquement de zéros. C’est moins fréquent que pour le numéro de série du BIOS, mais cela arrive, notamment sur des cartes très bon marché et certains modèles Gigabyte dont le numéro apparaît comme Default string jusqu’à la mise à jour du micrologiciel.

Ce qui le modifie. Uniquement le remplacement de la carte. C’est pourquoi le numéro de série de la carte mère et l’UUID SMBIOS sont les identifiants auxquels la plupart des systèmes anti-triche et de licence accordent le plus de poids.

Numéro de série du châssis (boîtier système)

Définition. Le numéro de série de la table Chassis du SMBIOS (type 3). Sur les ordinateurs portables et de bureau OEM, il correspond généralement au numéro de série système. Sur les PC assemblés par l’utilisateur, il s’agit presque toujours d’une valeur générique, car le boîtier ne possède pas de micrologiciel et le fabricant de la carte ignore quel boîtier vous avez acheté.

(Get-CimInstance Win32_SystemEnclosure).SerialNumber

Vous pouvez sans risque considérer cette valeur comme secondaire. Elle figure ici parce que certains outils HWID la lisent et que vous ne devez pas être surpris si elle affiche Default string.

Numéros de série des disques physiques — et pourquoi vol n’en est pas un

C’est ici que la confusion est la plus grande, car Windows expose deux éléments totalement différents que les utilisateurs appellent tous deux « numéro de série du disque ».

Numéro de série matériel (celui qu’il vous faut)

Chaque SSD et disque dur possède un numéro de série attribué par son fabricant et stocké dans son micrologiciel. Il est imprimé sur l’étiquette du disque et communiqué par les commandes d’identification SATA ou NVMe.

La méthode la plus fiable pour le lire sur les versions actuelles de Windows consiste à utiliser le module Storage :

Get-PhysicalDisk | Select-Object DeviceId, FriendlyName, MediaType, SerialNumber

Sortie typique :

DeviceId FriendlyName                 MediaType SerialNumber
-------- ------------                 --------- ------------
0        Samsung SSD 990 PRO 2TB      SSD       S6Z2NJ0T123456A
1        WDC WD40EZAZ-00SF3B0         HDD       WD-WX12D34ABCDE

La classe WMI classique fonctionne également et correspond à celle qu’utilisait l’ancienne commande wmic diskdrive :

Get-CimInstance Win32_DiskDrive | Select-Object Model, SerialNumber

Particularités que vous rencontrerez.

  • Espaces au début ou à la fin. Certains pilotes complètent le numéro de série jusqu’à une largeur fixe. Comparez les valeurs avec .Trim(), sinon vous obtiendrez de fausses différences.
  • Hexadécimal avec octets inversés sur les anciens systèmes. Sous Windows 7 et versions antérieures, Win32_PhysicalMedia renvoyait le numéro de série sous forme hexadécimale avec chaque paire de caractères inversée. Les versions actuelles de Windows renvoient une chaîne normale, mais si vous la comparez à une valeur enregistrée il y a plusieurs années, cela explique son apparence brouillée.
  • Valeur vide avec l’USB, le RAID ou certains disques NVMe. Les disques derrière un contrôleur RAID signalent le disque virtuel du contrôleur et non le disque physique ; les boîtiers USB masquent parfois le numéro de série interne. Get-PhysicalDisk obtient généralement de meilleurs résultats que Win32_DiskDrive dans ce cas, mais aucun des deux ne peut voir au-delà d’un RAID matériel.
  • Machines virtuelles. Les hyperviseurs attribuent des numéros de série synthétiques qui changent lorsque le disque virtuel est recréé.

Ce qui le modifie. Uniquement le remplacement du disque. Le formatage, le repartitionnement, le clonage vers un nouveau disque (le clone possède le numéro de série du nouveau disque) et la réinstallation de Windows ne le modifient pas. Les mises à jour du micrologiciel non plus.

Numéro de série du volume (généralement pas celui qu’il vous faut)

vol C:
 Volume in drive C is Windows
 Volume Serial Number is 8A3F-1C2B

Cette valeur de 8 chiffres hexadécimaux est écrite dans l’en-tête du système de fichiers lors du formatage du volume. Elle n’est pas stockée dans le micrologiciel du disque et n’a aucun rapport avec le matériel. Reformatez la partition et vous en obtiendrez une nouvelle. Clonez un disque secteur par secteur et le clone conservera le même numéro de série de volume que l’original.

Les anciens systèmes de licence — dont certains datent des années 1990 et 2000 — utilisaient effectivement le numéro de série du volume C:, ce qui explique sa présence persistante dans les discussions sur les HWID. Les systèmes anti-triche et DRM modernes l’ignorent généralement, précisément parce qu’il est très facile à modifier. Si un outil indique comme « numéro de série du disque » une valeur telle que 8A3F-1C2B, il lit le numéro de série du volume et non celui du disque.

Équivalent PowerShell, si vous en avez besoin dans un script :

(Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'").VolumeSerialNumber

Cette commande renvoie 8A3F1C2B sans le trait d’union.

Numéros de série des modules RAM

Définition. Chaque module de mémoire possède une puce SPD (Serial Presence Detect) contenant sa référence, son fabricant et — sur la plupart des modules — un numéro de série. Windows expose ces informations via Win32_PhysicalMemory.

Get-CimInstance Win32_PhysicalMemory |
  Select-Object DeviceLocator, Manufacturer, PartNumber, SerialNumber

Sortie typique :

DeviceLocator Manufacturer PartNumber           SerialNumber
------------- ------------ ----------           ------------
DIMM_A2       Corsair      CMK32GX5M2B5600C36   00000000
DIMM_B2       Corsair      CMK32GX5M2B5600C36   00000000

Observez les numéros de série. 00000000, une valeur vide ou la même valeur sur chaque barrette sont extrêmement fréquents avec la mémoire grand public. Certains fabricants ne programment aucun numéro de série ; certaines cartes ne transmettent pas le champ de numéro de série SPD au SMBIOS. Les mémoires pour serveurs et stations de travail sont bien plus susceptibles de renvoyer des numéros de série réels et uniques.

Ce qui les modifie. L’ajout, le retrait ou le remplacement de modules. La modification des profils XMP/EXPO n’a aucun effet. Notez également que DeviceLocator (le nom de l’emplacement) est propre à la carte : déplacer les mêmes barrettes vers d’autres emplacements modifie l’association entre emplacement et numéro de série, même si les numéros eux-mêmes restent inchangés — un détail qui piège les implémentations HWID simplistes.

ProcessorId du processeur — la valeur qui n’est pas un numéro de série

Définition. Une valeur de 16 chiffres hexadécimaux que Windows construit à partir de l’instruction CPUID : la signature du processeur (famille, modèle, révision) et les indicateurs de fonctionnalités.

Get-CimInstance Win32_Processor | Select-Object Name, ProcessorId
Name                                       ProcessorId
----                                       -----------
AMD Ryzen 7 7800X3D 8-Core Processor       178BFBFF00A60F12

Voici le point sur lequel presque tous les tutoriels HWID se trompent : ProcessorId n’est pas propre à votre puce. Tous les Ryzen 7 7800X3D de même révision et présentant le même ensemble de fonctionnalités visibles par le microcode renvoient le même 178BFBFF00A60F12. Intel a retiré de CPUID le numéro de série individuel du processeur (PSN) après le Pentium III en 2000 en raison d’objections liées à la confidentialité, et AMD n’en a jamais proposé. Ce que Windows renvoie aujourd’hui est un identifiant de modèle, et non un identifiant d’unité.

Cela ne le rend pas inutile. Il constitue un composant stable dans un hachage composite — il ne change que si vous remplacez le processeur par un modèle différent — et aide à distinguer la configuration globale d’une machine. Il ne peut simplement pas identifier à lui seul un ordinateur parmi tous ceux équipés du même processeur.

Ce qui le modifie. Le remplacement du processeur par un modèle ou une révision différente. Une mise à jour du microcode qui modifie les indicateurs de fonctionnalités signalés peut théoriquement changer les bits de poids faible, même si cela reste rare en pratique.

Adresses MAC

Définition. Une adresse de 48 bits inscrite dans chaque carte réseau et affichée sous forme de six paires hexadécimales. Les cartes Ethernet filaires, Wi-Fi et Bluetooth possèdent chacune la leur.

La commande CMD native fonctionne toujours et mérite d’être connue :

getmac /v /fo list

PowerShell affiche le nom et l’état de la carte dans une seule vue :

Get-NetAdapter | Select-Object Name, InterfaceDescription, MacAddress, Status
Name      InterfaceDescription                     MacAddress        Status
----      --------------------                     ----------        ------
Ethernet  Realtek Gaming 2.5GbE Family Controller  04-42-1A-9B-3C-7D Up
Wi-Fi     Intel(R) Wi-Fi 6E AX211 160MHz           A0-B1-C2-D3-E4-F5 Up

Particularités importantes pour un HWID.

  • Cartes virtuelles. Les clients VPN, Hyper-V, VMware, WSL2 et Docker ajoutent tous des cartes virtuelles possédant leurs propres adresses MAC. Elles apparaissent et disparaissent au fil des installations de logiciels, raison pour laquelle un HWID qui inclut « toutes les adresses MAC » est instable. Limitez-vous aux cartes physiques avec Get-NetAdapter -Physical.
  • Adresses matérielles aléatoires. Windows 10 et 11 peuvent rendre aléatoire l’adresse MAC Wi-Fi pour chaque réseau (Paramètres → Réseau et Internet → Wi-Fi → Adresses matérielles aléatoires). Lorsque cette option est activée, l’adresse MAC visible sur un réseau Wi-Fi diffère de celle affichée sur un autre. Les cartes filaires ne sont pas concernées par ce paramètre.
  • Modifiables par un administrateur. La plupart des pilotes permettent de remplacer l’adresse MAC dans Gestionnaire de périphériques → Avancé → Adresse réseau. Il s’agit d’une fonctionnalité légitime et documentée, pas d’un piratage — et c’est la principale raison pour laquelle une adresse MAC seule constitue un identifiant peu fiable.

Ce qui les modifie. Le remplacement de la carte, l’activation de la randomisation Wi-Fi, la définition d’une valeur de remplacement dans le pilote ou l’ajout/la suppression d’un logiciel de virtualisation (pour les cartes virtuelles).

Numéros de série des moniteurs issus de l’EDID

La plupart des guides HWID omettent cet élément, mais certains systèmes anti-triche le lisent ; il a donc sa place dans une liste exhaustive. Chaque moniteur transmet à la carte graphique un bloc EDID qui le décrit et qui comprend un code fabricant ainsi que, généralement, un numéro de série.

Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorID | ForEach-Object {
  [PSCustomObject]@{
    Manufacturer = -join [char[]]($_.ManufacturerName -ne 0)
    Model        = -join [char[]]($_.UserFriendlyName -ne 0)
    Serial       = -join [char[]]($_.SerialNumberID -ne 0)
  }
}
Manufacturer Model          Serial
------------ -----          ------
DEL          DELL S2721DGF  9X2Y3Z4

Les champs sont des tableaux d’octets complétés par des zéros, raison pour laquelle l’extrait les convertit en caractères et supprime les zéros. Certains moniteurs — en particulier les modèles bon marché — indiquent un numéro de série égal à 0 ou une valeur commune à l’ensemble de la série de production.

Ce qui le modifie. Le remplacement du moniteur. Changer de câble ou de port n’a aucun effet.

MachineGuid — l’ID logiciel qui résiste aux changements de matériel

Définition. Un GUID généré par Windows lors de l’installation et stocké dans HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid. Ce n’est pas un identifiant matériel. Il s’agit de l’« identifiant de machine » le plus utilisé dans les logiciels Windows, car il est extrêmement simple à lire et reste identique quels que soient les composants que vous remplacez.

CMD natif :

reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
    MachineGuid    REG_SZ    7e3a1b2c-4d5e-4f60-9a7b-8c9d0e1f2a3b

PowerShell :

(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Cryptography').MachineGuid

Ce qui le modifie. La réinstallation de Windows (une installation propre, et non une mise à niveau sur place ou une réinitialisation qui conserve la ruche du registre). Restaurer une image disque sur une autre machine transfère le même MachineGuid vers le nouveau matériel — c’est pourquoi les organisations qui déploient des images découvrent parfois des centaines de machines « identiques » dans les logiciels qui reposent uniquement sur cette valeur.

Puisqu’il change lors d’une réinstallation, mais pas lors d’une modification matérielle, MachineGuid se comporte à l’inverse d’un UUID de micrologiciel. Les implémentations HWID sérieuses utilisent les deux afin que ni une réinstallation ni le remplacement d’un composant ne produise à lui seul une « nouvelle » machine.

ID de produit Windows

Définition. La chaîne au format xxxxx-xxxxx-xxxxx-AAOEM affichée dans Paramètres → Système → Informations système. Elle identifie le canal de licence et l’installation de Windows, et non le matériel.

(Get-CimInstance Win32_OperatingSystem).SerialNumber

Elle figure ici parce que wmic os get serialnumber apparaît dans de nombreux fichiers batch destinés à « vérifier votre HWID » et que les utilisateurs la prennent pour un numéro de série matériel. Ce n’en est pas un ; elle change lors d’une réinstallation et parfois lors d’un changement d’édition ou d’une réactivation.

ComputerHardwareIds — l’identifiant matériel de Microsoft

Cet élément est rarement mentionné en dehors des cercles de développement de pilotes et c’est ce que Windows possède de plus proche d’un « HWID » officiel.

Windows Update utilise un ensemble de GUID appelés Computer Hardware IDs pour cibler des packages de micrologiciels et de pilotes destinés à des systèmes précis. Ils sont calculés en hachant différentes combinaisons de champs SMBIOS — fabricant, nom du produit, SKU, famille, fournisseur et version du BIOS, informations sur la carte de base — puis stockés dans le registre :

reg query "HKLM\SYSTEM\CurrentControlSet\Control\SystemInformation" /v ComputerHardwareIds
(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SystemInformation').ComputerHardwareIds
{a8b1c2d3-e4f5-5a6b-9c8d-7e6f5a4b3c2d}
{b9c2d3e4-f5a6-5b7c-8d9e-6f5a4b3c2d1e}
{c0d3e4f5-a6b7-5c8d-9e0f-5a4b3c2d1e0f}
...

Ces identifiants correspondent au modèle, et non à l’unité : deux ordinateurs portables identiques dotés de la même version du BIOS produisent le même ensemble. Ils constituent toutefois un contrôle de cohérence utile lorsque vos autres valeurs ressemblent à des valeurs génériques, car ils sont dérivés des chaînes du micrologiciel qu’un outil HWID lirait également. Si plusieurs machines partagent tous les ComputerHardwareIds, elles partageront presque certainement aussi le problème d’UUID SMBIOS ou le problème To Be Filled By O.E.M. décrit plus haut.

Le kit de pilotes Windows (Windows Driver Kit) fournit ComputerHardwareIds.exe, qui affiche la même liste ainsi que les champs SMBIOS exacts intégrés à chaque hachage — ce qui est utile pour comprendre précisément quelles chaînes de micrologiciel votre système expose.

Quels numéros de série composent réellement un « HWID » ?

Voici maintenant la question qui se cache derrière ces deux recherches. Vous avez consulté une douzaine de valeurs. Laquelle est le HWID ?

Aucune prise séparément. Un HWID tel que l’utilisent les systèmes anti-triche, les serveurs de licences et les outils de gestion des appareils est un hachage de plusieurs des valeurs ci-dessus, et chaque fournisseur choisit un ensemble et une méthode de hachage différents. C’est pourquoi le guide des formats HWID existe et pourquoi une valeur provenant d’un programme ne peut pas être comparée à celle d’un autre.

La documentation publique et les comptes rendus de rétro-ingénierie permettent d’estimer la pondération des valeurs comme suit :

IdentifiantPoids habituelRaison
Numéro de série de la carte mère, UUID SMBIOSÉlevéRésistent à la réinstallation du système, ne changent qu’avec le remplacement de la carte
Numéro de série du disque physique (disque système)ÉlevéStable, unique et facile à lire
MachineGuidMoyen à élevéDétecte les réinstallations, mais les images clonées le partagent
ProcessorId du processeurMoyenStable, mais commun à chaque puce du même modèle
Adresse MAC physiqueFaible à moyenFacile à remplacer, randomisation en Wi-Fi
Numéros de série de la RAMFaibleSouvent nuls ou dupliqués sur la mémoire grand public
Numéro de série EDID du moniteurFaibleLu par certains systèmes anti-triche ; les périphériques changent souvent
Numéro de série du volumeTrès faibleChange à chaque formatage
Numéro de série du BIOS/châssisVariableExcellent sur les machines OEM, valeur générique sur les cartes vendues au détail

Deux conséquences pratiques :

  1. Le remplacement d’un seul composant change rarement votre HWID du point de vue d’un système bien conçu. La plupart des implémentations tolèrent un certain nombre de champs modifiés avant de considérer la machine comme nouvelle. Le remplacement d’une carte graphique — qui, notez-le, n’apparaît nulle part dans cet article, car les GPU n’exposent aucun numéro de série via WMI — ne change généralement rien.
  2. Réinstaller Windows modifie MachineGuid et le numéro de série du volume, mais aucune valeur du micrologiciel. Si vous cherchez à comprendre pourquoi un bannissement ou un verrouillage de licence a persisté après une réinstallation, voici la réponse : la carte mère, le disque et l’UUID sont restés inchangés. Le guide sur les bannissements HWID explique les conséquences pratiques en détail.

Tout lire en une seule fois

Exécuter quatorze commandes à la main convient pour une seule vérification. Si vous souhaitez obtenir un rapport unique à enregistrer ou à comparer ultérieurement, vous disposez de trois solutions, toutes en lecture seule.

Un bloc PowerShell à coller. Il affiche les valeurs à forte pondération en laissant les valeurs génériques visibles, afin que vous puissiez voir ce que votre micrologiciel renvoie réellement :

$csp = Get-CimInstance Win32_ComputerSystemProduct
$bb  = Get-CimInstance Win32_BaseBoard
[PSCustomObject]@{
  SmbiosUuid    = $csp.UUID
  SystemSerial  = $csp.IdentifyingNumber
  BiosSerial    = (Get-CimInstance Win32_BIOS).SerialNumber
  BoardSerial   = $bb.SerialNumber
  BoardProduct  = $bb.Product
  DiskSerials   = (Get-PhysicalDisk | ForEach-Object { $_.SerialNumber.Trim() }) -join ', '
  CpuId         = (Get-CimInstance Win32_Processor).ProcessorId
  PhysicalMacs  = (Get-NetAdapter -Physical | ForEach-Object MacAddress) -join ', '
  MachineGuid   = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Cryptography').MachineGuid
} | Format-List

Le script BAT. Si vous préférez examiner un fichier avant de l’exécuter, le fichier .bat téléchargeable est un fichier batch en texte brut qui lance une requête PowerShell par identifiant et se met en pause à la fin. Il n’utilise pas wmic, ne calcule aucun hachage et n’écrit rien sur le disque.

Le fichier EXE. HWID Checker pour Windows lit les mêmes identifiants ainsi que les numéros de série de la RAM et des volumes, les affiche et calcule en plus un SHA-256 à partir des champs stables afin de fournir une chaîne unique à comparer dans le temps. Il s’agit d’une application console portable — double-cliquez, lisez, puis appuyez sur Entrée — et son hachage est notre valeur composite, pas une valeur utilisée par un jeu ou un serveur de licences. Cet outil sert à vérifier si votre propre machine renvoie les mêmes informations que le mois précédent, et non à prédire ce que calculera le logiciel d’un tiers. Le SHA-256 du fichier exécutable lui-même est publié sur la page de téléchargement afin que vous puissiez vérifier le fichier avant de l’exécuter.

Questions fréquentes

Pourquoi est-ce que j’obtiens un résultat différent de celui de l’outil « HWID checker » d’un ami ? Parce qu’il n’existe aucune norme. Son outil a haché un ensemble de champs différent. Comparez les valeurs brutes indiquées dans cet article plutôt que les hachages.

Les numéros de série de ma carte mère et de mon BIOS indiquent tous deux To Be Filled By O.E.M. — y a-t-il un problème ? Non. Vous possédez une carte mère vendue au détail et l’intégrateur système (vous-même) n’a jamais renseigné les champs OEM. Certains fabricants de cartes fournissent un outil d’édition DMI capable de les définir, mais il n’existe normalement aucune raison de le faire.

Puis-je les vérifier sur une machine à laquelle je n’ai pas physiquement accès ? Oui, avec les droits appropriés : Get-CimInstance -ComputerName <name> Win32_BaseBoard fonctionne via WinRM ou DCOM. Toutes les commandes présentées ici qui utilisent Get-CimInstance acceptent -ComputerName ou -CimSession.

systeminfo affiche-t-il les numéros de série HWID ? Non. Il affiche le fabricant, le modèle, la version du BIOS et l’ID de produit Windows, mais aucun numéro de série matériel. Il fournit un contexte utile, mais ne permet pas de rechercher un numéro de série.

Lesquels puis-je modifier ? Cet article n’explique pas comment modifier les identifiants, et HWID Checker ne modifie rien. L’adresse MAC et le numéro de série du volume peuvent être modifiés par l’utilisateur de façon prévue par leur conception ; les valeurs du micrologiciel ne sont pas destinées à l’être, et leur modification sur une carte qui vous appartient relève du fournisseur du micrologiciel, pas de Windows.

Ces informations sont-elles envoyées quelque part lorsque j’exécute les commandes ? Non. Chaque commande lit les tables du micrologiciel local, les pilotes de périphériques locaux ou le registre local. Rien dans ce guide ne contacte un réseau — y compris les fichiers EXE et BAT téléchargeables, qui ne contiennent aucun code réseau.


Si vous disposez d’un identifiant provenant d’un programme et souhaitez savoir à laquelle des valeurs ci-dessus il ressemble le plus, le vérificateur de format HWID en ligne reconnaît les UUID, les adresses MAC, les hachages hexadécimaux et les formats courants de numéros de série, puis explique leur structure — dans votre navigateur, sans envoyer la valeur où que ce soit.