質問
アプリケーションを USB ドライブにインストールするセットアップ プログラムを作成しています。このアプリケーションは USB ドライブからのみ使用することを目的としているため、インストール先の USB ドライブを自動的に選択することで、ユーザーの余分な手順を節約できます。
インストールに Nullsoft または MSI を使用することを検討するかもしれませんが、私は .NET にほとんど精通しているため、最初はカスタム .NET インストーラーまたは .NET 上のセットアップ コンポーネントのいずれかを試す予定です。
.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"]);
}
Kent のコードの 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