簡體   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