Existe-t-il un moyen d’identifier de manière unique les supports de stockage connectés à un PC Windows en .NET?

J’ai cherché une solution à cela pendant des semaines. Je cherche un moyen d’identifier de manière unique tout support de stockage connecté à un PC Windows. Support de stockage en particulier. Cela peut inclure des disques durs internes, des disques durs externes, des lecteurs flash, des cartes SD, le stockage sur smartphone, etc. Aucun support optique.

En gros, ce que je veux faire, c’est désigner une sorte de chaîne unique liée à un périphérique de stockage spécifique. Ainsi, chaque fois que ce périphérique de stockage est reconnecté, quelle que soit la lettre du lecteur, il peut être détecté automatiquement.

Problèmes que j’ai rencontrés:

  • Tous les périphériques de stockage n’ont pas de numéro de série
  • Lorsque des cartes SD sont accessibles via un lecteur de carte, les informations disponibles via WMI via la classe ManagementObjectSearcher sont liées au lecteur de carte plutôt qu’au média

Il semble qu’il y ait 4 propriétés principales qui PEUVENT renvoyer des informations uniques, mais pas toujours. SerialNumber , Caption , PNPDeviceID , Signature

Il y a sûrement quelque chose que Windows doit faire pour suivre les périphériques de stockage comme celui-ci. Des idées?

Pouvez-vous écrire à ces médias? Si oui, comment créer un fichier dans le répertoire racine contenant un GUID et stocker une référence à ce GUID dans votre application. En tant que GUID et garantie unique, vous pouvez utiliser ce fichier pour identifier de manière unique le volume.