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

Ton*_*Nam 4 c# disk volume hard-drive

当我打开Disk Management(右键单击我的电脑->管理)时,我看到: 在此处输入图片说明

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

我需要知道这一点的原因是因为我有一个加密的 USB mas 存储设备,我需要将参数与密码一起传递\Device\Harddisk5TrueCrypt,以便使用代码安装加密设备。

编辑

我知道如何查看驱动器信息。例如,我只是不知道如何知道驱动器 1 属于磁盘 0。换句话说,我在弄清楚Disk Number时遇到了麻烦。我正在寻求实施:

public string GetDiskNumber(char letter)
{
   // implenetation
   return Disk5;
}
Run Code Online (Sandbox Code Playgroud)

我将其称为:

GetDiskNumber('F');
Run Code Online (Sandbox Code Playgroud)

gbl*_*uez 5

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

System.Management.ManagementObject("Win32_LogicalDisk.DeviceID=" & DriveLetter & ":")
Run Code Online (Sandbox Code Playgroud)

Win32_LogicalDisk 类中查看更多我希望它有所帮助。顺便说一下,还有 PInvoke GetVolumeInformation

如果您需要 'PHYSICALDRIVE0',您应该使用Win32_PhysicalMedia 类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;
}
Run Code Online (Sandbox Code Playgroud)