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

标签 c# volume disk hard-drive

当我打开 Disk Management(右键单击我的电脑 -> 管理)时,我看到: enter image description here

我怎么知道路径 F:\ 属于 Disk5? 换句话说,我想知道 C# 可以使用哪些磁盘。

我之所以需要知道这一点,是因为我有一个加密的 USB mas 存储设备,我需要将参数 \Device\Harddisk5 传递给 TrueCrypt以及密码,以便使用代码安装加密设备。

编辑

我知道如何查看驱动器信息。例如,我只是不知道如何知道驱动器 1 属于磁盘 0。换句话说,我无法确定磁盘编号。我希望实现:

public string GetDiskNumber(char letter)
{
   // implenetation
   return Disk5;
}

我将其称为:

GetDiskNumber('F');

最佳答案

您可以使用 WMI 来检索该信息

System.Management.ManagementObject("Win32_LogicalDisk.DeviceID=" & DriveLetter & ":")

查看更多信息 Win32_LogicalDisk class我希望它有所帮助。顺便说一下,还有 PInvoke GetVolumeInformation .

如果您需要“PHYSICALDRIVE0”,您应该使用 Win32_PhysicalMedia class和类(class)Win32_DiskDrivePhysicalMedia将两者粘在一起。

您需要的 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;
}

关于c# - 使用 C# 查看磁盘管理信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321222/

相关文章:

c# - Azure Function C# 中的单元测试

C# 从数据库中获取信息

c# - 名字的正则表达式

c# - 使用 FFmpeg 增加/减少音量

java - 使用 Java 弹出 CD

c# - ListView 上的工具提示

mysql - 删除容器时 docker 卷会发生什么

java - 使用 JLayer 改变音量

python - 将原始数字写入磁盘

linux - 为不同的 block 设备使用不同的 Linux I/O 调度器