unidad saber reconocido permanente letra externo duro disco como cambiar asignar asigna .net usb

.net - saber - ¿Cómo encontrar la letra de la unidad USB?



como saber la letra de mi usb (3)

Estoy escribiendo un programa de instalación para instalar una aplicación en una unidad USB. La aplicación está pensada para ser utilizada solo desde unidades USB, por lo que se ahorraría un paso adicional para el usuario seleccionando automáticamente la unidad USB para instalar.

Podría explorar el uso de Nullsoft o MSI para la instalación, pero como estoy familiarizado con .NET inicialmente tengo la intención de probar el instalador .NET personalizado o el componente de instalación en .NET.

¿Es posible determinar la letra de unidad de una unidad flash USB en Windows con .NET? ¿Cómo?


Esto enumerará todas las unidades en el sistema sin LINQ pero aún usando WMI:

// browse all USB WMI physical disks foreach(ManagementObject drive in new ManagementObjectSearcher( "select * from Win32_DiskDrive where InterfaceType=''USB''").Get()) { // associate physical disks with partitions foreach(ManagementObject partition in new ManagementObjectSearcher( "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=''" + drive["DeviceID"] + "''} WHERE AssocClass = Win32_DiskDriveToDiskPartition").Get()) { Console.WriteLine("Partition=" + partition["Name"]); // associate partitions with logical disks (drive letter volumes) foreach(ManagementObject disk in new ManagementObjectSearcher( "ASSOCIATORS OF {Win32_DiskPartition.DeviceID=''" + partition["DeviceID"] + "''} WHERE AssocClass = Win32_LogicalDiskToPartition").Get()) { Console.WriteLine("Disk=" + disk["Name"]); } } // this may display nothing if the physical disk // does not have a hardware serial number Console.WriteLine("Serial=" + new ManagementObject("Win32_PhysicalMedia.Tag=''" + drive["DeviceID"] + "''")["SerialNumber"]); }

Fuente


Podrías usar:

from driveInfo in DriveInfo.GetDrives() where driveInfo.DriveType == DriveType.Removable && driveInfo.IsReady select driveInfo.RootDirectory.FullName


Versión C # 2.0 del código de Kent (desde lo más alto de mi cabeza, no probado):

IList<String> fullNames = new List<String>(); foreach (DriveInfo driveInfo in DriveInfo.GetDrives()) { if (driveInfo.DriveType == DriveType.Removable) { fullNames.Add(driveInfo.RootDirectory.FullName); } }