嗨我看看WMI类...但是没有人可以帮我获取分区表信息......现在我有一个项目就是显示USB拇指驱动器.MBR我应该如何去做它?真的很难...任何帮助和指导将非常感谢!
P.S。代码只能用C#
编写修改
谢谢!我浏览了CreateFile文档......仍然想知道如何使用P / Invoke调用CreateFile并读取引导扇区(显示出.MBR)?你有这个部分的参考代码吗?再次感谢你!!
答案 0 :(得分:2)
如果需要,可以使用WMI获取有关任何驱动器的信息。为此,您需要查询相应的WMI类。使用C#,您必须添加以下引用:
System.Management
并使用陈述:
using System.Management;
要获取附加到计算机的磁盘信息,您可以使用此查询:
Select * From Win32_DiskDrive
使用C#,您可以查询如下:
SelectQuery wmi_sorgusu = new SelectQuery("Select * from Win32_DiskDrive");
ManagementObjectSearcher wmi_bulucu = new ManagementObjectSearcher( wmi_sorgusu );
foreach (ManagementObject wmi_nesne in wmi_bulucu.Get()) {
Console.WriteLine(wmi_nesne.GetPropertyValue( "DeviceID" ).ToString());
Console.WriteLine(wmi_nesne.GetPropertyValue( "InterfaceType" ).ToString());
Console.WriteLine(wmi_nesne.GetPropertyValue( "Caption" ).ToString());
Console.WriteLine(wmi_nesne.GetPropertyValue( "Status" ).ToString());
Console.WriteLine(wmi_nesne.GetPropertyValue( "MediaLoaded" ).ToString());
//... etc
}
获取设备参数后,可以使用相同的方法查询Win32_DiskPartition WMI类。您可以将设备参数作为WHERE子句提供给SELECT查询。对Win32_DiskPartition的查询将返回连接到系统的所有驱动器的所有分区。
答案 1 :(得分:1)
如果您准备自己解析原始信息,可以使用P / Invoke调用CreateFile。如果您的用户帐户具有足够的mojo,则可以通过向其传递字符串来打开原始磁盘设备,例如"\\.\PHYSICALDRIVE0"
。有关更多详细信息,请参阅CreateFile的文档。
答案 2 :(得分:0)
老实说,如果你不能用IO.FileStream以相同的魔术路径打开它,我会非常惊讶。
答案 3 :(得分:0)
确实C#FileStream无法直接打开物理设备:
未处理的异常:System.ArgumentException:FileStream不会 打开Win32设备,如磁盘分区和磁带驱动器。避免使用 路径中的“\。\”。