C# 使用c查看磁盘管理信息

C# 使用c查看磁盘管理信息,c#,volume,disk,hard-drive,C#,Volume,Disk,Hard Drive,打开磁盘管理时,右键单击我的计算机->管理,我看到: 我如何知道路径F:\属于Disk5?换句话说,我想知道什么磁盘可以与C一起使用 我之所以需要知道这一点,是因为我有一个加密的usb mas存储设备,我需要将参数\device\Harddisk5与密码一起传递给,以便用代码装载加密的设备 编辑 我知道如何查看驱动器信息。例如,我不知道如何知道驱动器1属于磁盘0。换句话说,我很难计算出磁盘号。我希望实施: public string GetDiskNumber(char letter) {

打开磁盘管理时,右键单击我的计算机->管理,我看到:

我如何知道路径F:\属于Disk5?换句话说,我想知道什么磁盘可以与C一起使用

我之所以需要知道这一点,是因为我有一个加密的usb mas存储设备,我需要将参数\device\Harddisk5与密码一起传递给,以便用代码装载加密的设备

编辑 我知道如何查看驱动器信息。例如,我不知道如何知道驱动器1属于磁盘0。换句话说,我很难计算出磁盘号。我希望实施:

public string GetDiskNumber(char letter)
{
   // implenetation
   return Disk5;
}
我称之为:

GetDiskNumber('F');

您可以使用WMI检索该信息

System.Management.ManagementObject("Win32_LogicalDisk.DeviceID=" & DriveLetter & ":")
我希望这会有所帮助。顺便说一句,还有平沃克

如果您需要“PHYSICALDRIVE0”,您应该使用和类粘合这两种

C语言中你需要的一个例子

public string GetDiskNumber(string letter)
{
    var ret = "0";
    var scope = new ManagementScope("\\\\.\\ROOT\\cimv2");
    var query = new ObjectQuery("Associators of {Win32_LogicalDisk.DeviceID='" +     letter + ":'} WHERE ResultRole=Antecedent");
    var searcher = new ManagementObjectSearcher(scope, query);
    var queryCollection = searcher.Get();
    foreach (ManagementObject m in queryCollection)
    {
        ret = m["Name"].ToString().Replace("Disk #", "")[0].ToString();
    }
    return ret;
}

已经为你做了一个在字典中获取驱动器号及其编号的方法

public Dictionary<string, string> GetDrives()
        {
            var result = new Dictionary<string, string>();
            foreach ( var drive in new ManagementObjectSearcher( "Select * from Win32_LogicalDiskToPartition" ).Get().Cast<ManagementObject>().ToList() )
            {
                var driveLetter = Regex.Match( (string)drive[ "Dependent" ], @"DeviceID=""(.*)""" ).Groups[ 1 ].Value;
                var driveNumber = Regex.Match( (string)drive[ "Antecedent" ], @"Disk #(\d*)," ).Groups[ 1 ].Value;
                result.Add( driveLetter, driveNumber );
            }
            return result;
        }

我想你是通过C代码来实现的。。?你看过使用WMIWMI了吗?我也会用它来获取这些信息,请查看这些类Win32_DiskDrive和Win32_DiskPartition,它们没有告诉我驱动器号驱动器F:也可以,我先尝试了其他答案+非常感谢你的帮助!非常感谢!这提供了很多信息。当我尝试System.Management.ManagementObjectWin32_LogicalDisk.DeviceID=c:例如,我如何知道它的驱动器0?如果您需要类似“PHYSICALDRIVE0”的名称,您应该使用Win32_PhysicalMedia类。