繁体   English   中英

Diskpart UniqueID-C#如何获取该ID

[英]Diskpart UniqueID - C# how to get that id

我熟悉VolumeSerialNumber,我需要与diskpart中所示相同的磁盘ID:

WD My Passport 0740 USB设备磁盘ID:08B29B51类型:USB状态:联机路径:0目标:0 LUN ID:0位置路径:不可用当前只读状态:否只读:否引导盘:否Pagefile磁盘:否休眠文件磁盘:否故障转储磁盘:否群集磁盘:否

我在网络(WMI)或论坛上找不到支持此请求的任何内容。 有人有主意吗?

Win32_DiskDrive WMI类。 它有一个名为Signature的字段,其中包含此ID。 但是请注意,这不是string ,而是数字。 如果要匹配在DiskPart中看到的内容,则必须将该数字显示为十六进制字符串( signature.ToString("X")

这是打印驱动器签名的代码:

public void PrintDiskDriveSignature()
{
    var searcher = new ManagementObjectSearcher
              (@"\\localhost\ROOT\CIMv2", "select * from Win32_DiskDrive");
    var drives = searcher.Get();
    foreach (var drive in drives)
    {
        string name = drive["Name"].ToString();
        uint signature = (uint) drive["Signature"];
        Console.WriteLine("{0}: {1}", name, signature.ToString("X"));
    }
}

这是我创建的用于从Driveletter获取DiskID的方法。 可能是执行此操作的更好方法,但这目前对我有用。 感谢你的帮助。

  public static string GetDiskID(char Drive) { uint volumeSerialNumber = 0; bool DriveFound = false; foreach (ManagementObject drive in new ManagementObjectSearcher("select DeviceID, Signature from Win32_DiskDrive").Get()) { foreach (ManagementObject partition in new ManagementObjectSearcher(String.Format("associators of {{Win32_DiskDrive.DeviceID='{0}'}} where AssocClass = Win32_DiskDriveToDiskPartition", drive["DeviceID"])).Get()) { if (partition != null) { ManagementObject logical = new ManagementObjectSearcher(String.Format("associators of {{Win32_DiskPartition.DeviceID='{0}'}} where AssocClass = Win32_LogicalDiskToPartition", partition["DeviceID"])).First(); if (logical != null) { if (logical["Name"] != null) { string logicalName = logical["Name"].ToString(); if (logicalName[0] == Drive) { volumeSerialNumber = (uint)drive["Signature"]; DriveFound = true; break; } } } } } if (DriveFound) break; } var serial = volumeSerialNumber.ToString("x"); while (serial.Length < 8) { serial = serial.Insert(0, "0"); } return serial.ToUpper(); } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM