2010-12-14 3 views

Répondre

2

Thumbs Up pour la réponse d'Ardman. Parfait. Pour ajouter une légère modification, je voudrais ajouter une modification où vous pouvez trouver le type de lecteur. Cela devrait répondre à votre problème.

DriveInfo[] mydrives = DriveInfo.GetDrives(); 

     foreach (DriveInfo mydrive in mydrives) 
     { 
      if (mydrive.DriveType == DriveType.Removable) 
      { 
       Console.WriteLine("\nRemovable disk"); 
       Console.WriteLine("Drive: {0}", mydrive.Name); 
       Console.WriteLine("Type: {0}", mydrive.DriveType);      
      } 
      else 
      { 
       Console.WriteLine("\nNon Removable disk\n"); 
       Console.WriteLine("Drive: {0}", mydrive.Name); 
       Console.WriteLine("Type: {0}", mydrive.DriveType);     
      } 
     } 

Ou si vous souhaitez obtenir les noms de lecteurs en particulier, vous pouvez également faire ceci. S'il vous plaît gardez à l'esprit que ce sont des exemples tirés du web, de sorte que les auteurs particuliers devraient obtenir le crédit. Ce que j'ai fait est de créer un programme complet en utilisant ces extraits de code afin que vous puissiez comprendre.

[DllImport("kernel32.dll", CharSet = CharSet.Auto)] 
    static extern bool GetVolumeInformation(string Volume, StringBuilder VolumeName, uint VolumeNameSize,out uint SerialNumber, out uint SerialNumberLength, out uint flags,StringBuilder fs, uint fs_size); 

Commencez par écrire cette fonction telle quelle. Il utilise le kernel32.dll pour récupérer les informations sur le lecteur. Puis dans la fonction principale vous pouvez simplement ajouter ces codes (Si c'est une application console ou si vous avez une interface graphique appropriée faire.)

uint serialNum, serialNumLength, flags; 
     StringBuilder volumename = new StringBuilder(256); 
     StringBuilder fstype = new StringBuilder(256); 
     bool ok = false; 
     //Cursor.Current = Cursors.WaitCursor; 
     foreach (string drives in Environment.GetLogicalDrives()) 
     { 
      ok = GetVolumeInformation(drives, volumename, (uint)volumename.Capacity - 1, out serialNum, 
            out serialNumLength, out flags, fstype, (uint)fstype.Capacity - 1); 
      if (ok) 
      { 
       Console.WriteLine("\n Volume Information of " + drives + "\n"); 
       Console.WriteLine("\nSerialNumber of is..... " + serialNum.ToString() + " \n"); 
       if (volumename != null) 
       { 
        Console.WriteLine("VolumeName is..... " + volumename.ToString() + " \n"); 
       } 
       if (fstype != null) 
       { 
        Console.WriteLine("FileType is..... " + fstype.ToString() + " \n"); 
       } 
      } 
      ok = false; 
     } 

Je suppose que cela devrait être une réponse complète pour vous.

+1

Y at-il moyen de connaître le vrai nom de l'appareil? - Shira (G:) - (mon DOK), pas seulement G :? – Shira

+0

J'ai édité ma réponse ici. S'il te plaît vérifie le. – JCTLK

2
DriveInfo[] mydrives = DriveInfo.GetDrives(); 

foreach (DriveInfo mydrive in mydrives) 
{ 
    Console.WriteLine("Drive: {0}", mydrive.Name); 
    Console.WriteLine("Type: {0}", mydrive.DriveType); 
} 

Ce code parcourt chaque lecteur et vous verrez que vos lecteurs USB apparaîtront. Le DriveType affichera comme Removable et non USB, juste pour que vous soyez au courant.

Plus d'informations sur DriveType.

+2

Les lecteurs vont apparaître comme « amovible », mais ce ne sera pas dire que les sont USB. – Gabe

+0

Ce code me montre tous les périphériques USB et leur nom, mais puis-je savoir lequel est DOK par exemple? – Shira

0

Ou vous pouvez faire quelque chose comme ça (dans mon exemple, mettre à jour la liste des disques dans un combobox):

drives = DriveInfo.GetDrives().Where(drive => drive.IsReady && drive.DriveType == DriveType.Removable).ToArray(); 

     if (drives.Length == 0) 
     { 
      drivesBox.Items.Add("No USB Stick found."); 
      formatButton.Enabled = false; 
     } 
     else 
     { 
      foreach (DriveInfo drive in drives) 
      { 
       drivesBox.Items.Add(drive.VolumeLabel + " (" + drive.Name + ")"); 
      } 
      formatButton.Enabled = true; 
     } 
Questions connexes