如何获得由卷ID驱动器的信息(How to get drive information by vol

2019-07-29 00:13发布

我有卷ID在其中的一个txt文件。

我需要从驱动器卷ID(Windows)中的驱动器信息(驱动器盘符,驱动器大小等):

卷ID是按以下格式:

\\?\Volume{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}

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

没关系的信息是如何获取的(也可能是脚本,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"];
}

Answer 1:

卷大小,等等很容易。 只需使用普通的Win32方法。 接受任何功能"C:"作为一个驱动器也将接受卷GUID路径 (因为这是一个\\?\Volume{XXX}正确的称呼)。

“驱动信”是有点麻烦,因为可以是0,1或多个驱动器号。 你需要调用FindFirstVolumeMountPoint / FindNextVolumeMountPoint / FindVolumeMountPointClose让所有的人。



Answer 2:

尝试使用此

System.Management.ManagementObjectSearcher ms =
new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject mo in ms.Get())
{
    //Find by ID
}

有关详细信息芦苇这个Win32_DiskDrive类



Answer 3:

有此API函数: GetVolumePathNamesForVolumeName

它返回一个空值终止阵列,以允许多个安装点。 如果你只有一个安装点(典型值),那么你就可以作为一个经常空结束的字符串读它。

这是更高效,枚举磁盘/卷,这可能会导致闲置磁盘运转起来。



Answer 4:

您可以使用DriveInfo.GetDrives Method来获得驱动器信息。 下面是从MSDN示例代码

DriveInfo[] allDrives = DriveInfo.GetDrives();

foreach (DriveInfo d in allDrives)
{
    Console.WriteLine("Drive {0}", d.Name);
    Console.WriteLine("  File type: {0}", d.DriveType);
    if (d.IsReady == true)
    {
        Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
        Console.WriteLine("  File system: {0}", d.DriveFormat);
        Console.WriteLine(
            "  Available space to current user:{0, 15} bytes", 
            d.AvailableFreeSpace);

        Console.WriteLine(
            "  Total available space:          {0, 15} bytes",
            d.TotalFreeSpace);

        Console.WriteLine(
            "  Total size of drive:            {0, 15} bytes ",
            d.TotalSize);
    }
}


文章来源: How to get drive information by volume id