C# getdrives 类型固定但没有 USB 硬盘?
Posted
技术标签:
【中文标题】C# getdrives 类型固定但没有 USB 硬盘?【英文标题】:C# getdrives with type fixed but without usb harddisks? 【发布时间】:2010-12-12 13:34:10 【问题描述】:我想检索系统中的固定磁盘列表。但是 C#s GetDrives 固定驱动器包括插入式 USB 硬盘。
知道如何检测到固定驱动器不是 USB 硬盘,反之亦然?
【问题讨论】:
抱歉,网络中断,请查看以下链接... 【参考方案1】:解决方案来自How to get serial number of USB-Stick in C#:
//import the System.Management namespace at the top in your "using" statement.
ManagementObjectSearch theSearcher = new ManagementObjectSearcher(
"SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
【讨论】:
正确,虽然这将列出棒和驱动器,并且快速浏览属性并没有发现找到驱动器号的简单方法。 显然以法莲已经有了这些。此解决方案旨在展示如何过滤掉 USB 驱动器。这就是为什么查询被写成InterfaceType='USB'
,以及为什么包含棍子并不重要。
无法匹配 ManagementObjects 和 DriveInfo 对象,因为查询不返回驱动器号。【参考方案2】:
使用 DriveType 检测驱动器的类型:
using System.IO;
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
if (d.IsReady && d.DriveType == DriveType.Fixed)
// This is the drive you want...
DriveInfo Class
编辑1:
检查以下链接: How do I detected whether a hard drive is connected via USB?
【讨论】:
但是 DriveType.Removable 只是 USB 记忆棒而不是 USB 硬盘。来自 Docu:驱动器是可移动存储设备,例如软盘驱动器或 USB 闪存驱动器。 USB 硬盘属于固定类型,这就是问题所在! 有可能。您可以在底部查看我的解决方案。【参考方案3】:这里你可以得到USB硬盘列表。
//Add Reference System.Management and use namespace at the top of the code.
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
foreach (ManagementObject queryObj in searcher.Get())
foreach (ManagementObject b in queryObj.GetRelated("Win32_DiskPartition"))
foreach (ManagementBaseObject c in b.GetRelated("Win32_LogicalDisk"))
Console.WriteLine(String.Format("0" + "\\", c["Name"].ToString())); // here it will print USB drive letter
在这里你可以得到所有固定驱动器的列表(系统和USB硬盘):
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
if (d.IsReady == true && d.DriveType == DriveType.Fixed)
Console.WriteLine("Drive 0", d.Name);
Console.WriteLine(" Drive type: 0", d.DriveType);
如果你比较它们,那么你可以检索系统中的固定磁盘列表,但没有USB硬盘。
【讨论】:
【参考方案4】:将此 MSDN 链接用于单个解决方案(包括查找驱动器号): WMI Tasks: Disks and File Systems
【讨论】:
以上是关于C# getdrives 类型固定但没有 USB 硬盘?的主要内容,如果未能解决你的问题,请参考以下文章
tomcat 6.0.35 获取尝试失败!!!清除挂起的获取。 java.sql.DriverManager.getDriver(DriverManager.java:243) 中没有合适的驱动程序