Je veux obtenir la liste des disques amovibles en c#. Je veux sauter les commandes locales. Parce que je veux que l'utilisateur enregistre le fichier uniquement sur un disque amovible.
3 réponses
Vous devrez référencer System.IO
pour cette méthode.
var driveList = DriveInfo.GetDrives();
foreach (DriveInfo drive in driveList)
{
if (drive .DriveType == DriveType.Removable)
{
//Add to RemovableDrive list or whatever activity you want
}
}
Ou pour les fans de LINQ :
var driveList = DriveInfo.GetDrives().Where(d => d.DriveType == DriveType.Removable);
Ajouté
En ce qui concerne la partie Saving, pour autant que je sache, je ne pense pas que vous puissiez restreindre l'endroit où l'utilisateur est autorisé à enregistrer à l'aide d'un SaveFileDialog, mais vous pouvez effectuer une vérification après avoir affiché le SaveFileDialog.
if(saveFileDialog.ShowDialog() == DialogResult.OK)
{
if (CheckFilePathIsOfRemovableDisk(saveFileDialog.FileName) == true)
{
//carry on with save
}
else
{
MessageBox.Show("Must save to Removable Disk, location was not valid");
}
}
OU
La meilleure option serait de créer votre propre boîte de dialogue d'enregistrement, qui contient une arborescence, n'affichant que les lecteurs amovibles et leur contenu pour que l'utilisateur puisse l'enregistrer ! Je recommanderais cette option.
J'espère que cela t'aides
Que diriez-vous:
var removableDrives = from d in System.IO.DriveInfo.GetDrives()
where d.DriveType == DriveType.Removable;
Vous pouvez également utiliser WMI pour obtenir la liste des lecteurs amovibles.
ManagementObjectCollection drives = new ManagementObjectSearcher (
"SELECT Caption, DeviceID FROM Win32_DiskDrive WHERE InterfaceType='USB'"
).Get();
Modifié en fonction du commentaire :
Une fois que vous avez obtenu la liste des lecteurs, accédez aux GUID et ajoutez-les à la collection SaveFileDialogInstance.CustomPlaces.
Le code ci-dessous a besoin de quelques ajustements...
System.Windows.Forms.SaveFileDialog dls = new System.Windows.Forms.SaveFileDialog();
dls.CustomPlaces.Clear();
dls.CustomPlaces.Add(AddGuidOfTheExternalDriveOneByOne);
....
....
dls.ShowDialog();
DriveInfo.GetDrives()
et en s'appuyant sur la propriété IsRemovable
: les disques durs branchés sur le port USB peuvent ne pas être identifiés comme IsRemovable
donc le sont faciles à manquer. L'utilisation de WMI nécessite un peu plus de travail mais est plus robuste.
Questions connexes
Questions liées
De nouvelles questions
c#
C # (prononcé "see sharp") est un langage de programmation multi-paradigme de haut niveau, typé statiquement développé par Microsoft. Le code C # cible généralement la famille d'outils et d'exécutions Microsoft .NET, notamment le .NET Framework, .NET Core et Xamarin. Utilisez cette balise pour les questions sur le code écrit en C # ou en spécification formelle de C #.