2

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

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

4

3 回答 3

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

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

要使用上述任何一种方法,您都需要管理员权限,可以在此处找到一个似乎可以规避此问题的实用程序。如果您喜欢冒险,C++/Win32源代码可供您仔细阅读。(查看函数“ReadPhysicalDriveInNTWithZeroRights()”)

于 2009-02-11T20:13:24.857 回答
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
于 2017-06-16T11:53:41.893 回答
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

希望能帮助到你。

于 2013-08-16T18:07:01.943 回答