2008-12-16 6 views
4

Pouvez-vous montrer un exemple de code pour la lecture d'une étiquette de disque ou le nom de volume dans .NET? Je me sens cela nécessite WMI, mais je suis réticent à « déroulant » dans WMI parce qu'il est comme laisser tomber vers le bas dans une requête SQL basée sur une chaîne dans le sens que certains objets ne peuvent exister sur certaines versions de systèmes d'exploitation ou l'utilisateur peut ne pas avoir le droit d'interroger certaines données. Je serai heureux d'être convaincu que je me trompe sur WMI ...Comment puis-je lire une "étiquette de lecteur" ou un "nom de volume" dans .NET?

Répondre

12

Non WMI requis. Vous obtiendrez toutes les étiquettes de volume suivantes:

var labels = from drive in DriveInfo.GetDrives() 
      select drive.VolumeLabel 
+1

Ou (nouveau DriveInfo ("C")). VolumeLabel –

+0

C'est la bonne réponse. Je trouve qu'il est préférable d'obtenir une instance DriveInfo puis demander la VolumeLabel comme une déclaration distincte, car drive.VolumeLabel jette un IOException quand « le lecteur est pas prêt », comme un vide CDROM. Des conseils sur la façon d'éviter cette exception? Juste l'avaler? – flipdoubt

3

Appelez DriveInfo.GetDrives pour obtenir un tableau d'informations sur le lecteur. Ensuite, regardez DriveInfo.VolumeLabel

1

Vous pouvez utiliser System.IO.DriveInfo pour obtenir la liste des lecteurs. Voir l'exemple suivant:

Note: CDRom types d'entraînement n'ont pas un nom de volume.

Using System.IO; 
. 
. 
. 
DriveInfo[] driveInfoList = DriveInfo.GetDrives(); 
foreach (DriveInfo drive in driveInfoList) 
{ 
    if (drive.DriveType != DriveType.CDRom) 
     textBox1.Text += String.Format("Name:{0} Volume:{1}\r\n", drive.Name, drive.VolumeLabel); 
    else 
     textBox1.Text += String.Format("Name:{0}\r\n", drive. 
} 
+0

Les CD-ROM et autres lecteurs amovibles portent des étiquettes lorsqu'ils contiennent des disques portant des étiquettes. – flipdoubt

+0

Je suppose que la meilleure façon d'éviter les erreurs est de tester driveInfo.IsReady avant de demander le VolumeLabel. – flipdoubt

Questions connexes