Si certains périphériques USB sont connectés à ma machine, comment puis-je savoir quel est le chemin d'accès à chacun d'entre eux?Chemin des périphériques USB connectés à la machine?
Y at-il moyen de le savoir à travers le code?
Si certains périphériques USB sont connectés à ma machine, comment puis-je savoir quel est le chemin d'accès à chacun d'entre eux?Chemin des périphériques USB connectés à la machine?
Y at-il moyen de le savoir à travers le code?
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.
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.
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;
}
Y at-il moyen de connaître le vrai nom de l'appareil? - Shira (G:) - (mon DOK), pas seulement G :? – Shira
J'ai édité ma réponse ici. S'il te plaît vérifie le. – JCTLK