如何按卷ID获取驱动器信息

use*_*541 7 c# c++ drive driveinfo

我有一个带有卷id的txt文件.

我需要从驱动器卷ID(Windows)获取驱动器信息(驱动器号,驱动器大小等):

卷ID采用以下格式:

\\?\Volume{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
Run Code Online (Sandbox Code Playgroud)

驱动器可以是可移动/本地磁盘

检索信息无关紧要(可能是脚本,cpp,c#,java代码).

编辑:

我试图用DriveInfo,的Win32_LogicalDisk,Win32_Volume,Win32_PnpDevices - 但我找不到这个奇怪的ID ......在所有情况下的ID有differrent格式

更新:

找到了怎么做.

你可以像这样枚举Win32_Volume:

ManagementObjectSearcher ms = new ManagementObjectSearcher("Select * from Win32_Volume");    
foreach(ManagementObject mo in ms.Get())   
{
    var guid = mo["DeviceID"].ToString();

    if(guid == myGuid)
        return mo["DriveLetter"];
}
Run Code Online (Sandbox Code Playgroud)

MSa*_*ers 3

体积大小等很容易。只需使用普通的 Win32 方法即可。任何接受"C:"作为驱动器的函数也将接受卷 GUID 路径(因为这就是 a 的\\?\Volume{XXX}正确调用方式)。

“驱动器号”有点棘手,因为可能有 0 个、1 个或多个驱动器号。您需要打电话FindFirstVolumeMountPoint / FindNextVolumeMountPoint / FindVolumeMountPointClose才能获得所有这些信息。