2009-02-11 3 views
2

Как я могу прочитать серийный номер жесткого диска для дисков IDE и SATA в VB.NET? (я не хочу серийный номер тома).Получить серийный номер H/D (не серийный номер Volumn) для IDE и SATA

Эта информация должна быть собрана как для XP, так и для Vista, если это возможно, без административных прав.

ответ

6

Вы можете использовать WMI (Инструментарий управления Windows), как это:

Dim mos As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia") 

For Each mo As ManagementObject In mos.Get() 
    Dim serial As String = mo("SerialNumber").ToString() 
Next 

Хотя, я читал о случаях, в которых нет серийный номер не вернувшихся с помощью WMI. Другой способ добиться этого будет через Platform Invocation Services (PInvoke).

This статья содержит загрузку, в которой автор реализует CreateFile() и DeviceIoControl() для извлечения информации о диске через службы Interop в VB .NET.

Чтобы использовать любой из описанных выше способов, вам понадобятся права ADMIN, утилита, которая, кажется, обходит это, может быть найдена here. Если ваше чувство приключений для C++/Win32 source code доступно для ознакомления. (Проверьте 'ReadPhysicalDriveInNTWithZeroRights()' функции)

0

Вот код, чтобы получить серийный номер HDD

Dim HDD_Serial As String 

    Dim hdd As New ManagementObjectSearcher("select * from Win32_DiskDrive") 

    For Each hd In hdd.Get 

     HDD_Serial = hd("SerialNumber") 
     MsgBox(HDD_Serial) 
    Next 

Надеется, что это помогает.

-1
Public Function getHardDiskSerialNo() 
    Dim serial As String 

    Dim hd As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia") 
    For Each dvs As ManagementObject In hd.Get() 
     serial = dvs("SerialNumber").ToString() 

    Next 
    Return serial 

End Function 
+0

Это отмеченное как низкое качество. Пожалуйста, разверните только свой код, чтобы объяснить, что делает код. – Bugs

Смежные вопросы