获取IDE和SATA的H / D序列号(非Volumn序列号)

时间:2009-02-11 08:28:55

标签: vb.net serial-number

如何在VB.NET中读取IDE和SATA驱动器的硬盘序列号? (我不想要卷序列号。)

如果没有管理权限,应该为XP和Vista收集此信息。

3 个答案:

答案 0 :(得分:6)

您可以使用WMI(Windows Management Instrumentation),如下所示:

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没有返回序列号的情况。实现此目的的另一种方法是通过平台调用服务(PInvoke)。

This文章包含一个下载,其中作者通过VB .NET中的Interop服务实现CreateFile()DeviceIoControl()以提取驱动器信息。

要使用上述方法中的任何一种,您将需要ADMIN权限,可以找到一个似乎可以绕过此实用程序的实用程序here。如果您喜欢冒险,可以使用C ++ / Win32 source code进行细读。 (查看函数'ReadPhysicalDriveInNTWithZeroRights()')

答案 1 :(得分: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

答案 2 :(得分:0)

以下是获取硬盘序列号的代码

    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

希望它有所帮助。