문제
USB 드라이브에 응용 프로그램을 설치하기위한 설정 프로그램을 작성하고 있습니다. 이 응용 프로그램은 USB 드라이브에서만 사용되어야하므로 설치할 USB 드라이브를 자동으로 선택하여 사용자에게 추가 단계를 저장합니다.
설치에 NullSoft 또는 MSI를 사용하여 탐색 할 수도 있지만 .NET에 주로 익숙하기 때문에 처음에는 .NET에서 Custom .NET Installer 또는 설정 구성 요소를 시도 할 계획입니다.
.NET을 사용하여 Windows에서 USB 플래시 드라이브의 드라이브 문자를 결정할 수 있습니까? 어떻게?
해결책
당신은 사용할 수 있습니다 :
from driveInfo in DriveInfo.GetDrives()
where driveInfo.DriveType == DriveType.Removable && driveInfo.IsReady
select driveInfo.RootDirectory.FullName
다른 팁
이것은 LINQ없이 시스템의 모든 드라이브를 열거하지만 여전히 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"]);
}
C# 2.0 켄트 코드의 버전 (테스트되지 않은 내 머리 꼭대기에서) :
IList<String> fullNames = new List<String>();
foreach (DriveInfo driveInfo in DriveInfo.GetDrives()) {
if (driveInfo.DriveType == DriveType.Removable) {
fullNames.Add(driveInfo.RootDirectory.FullName);
}
}
제휴하지 않습니다 StackOverflow