문제

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);
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top