我怎么能读硬盘上的序列号IDE和SATA驱动器VB.NET?(我可不想卷序列编号)。

这个信息应该收集这两个XP和Vista如果可能没有管理权。

有帮助吗?

解决方案

你可以使用 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).

文章包括下载在其提交人实现了 调用()DeviceIoControl() 提取驱动的信息通过互操作服务VB。网。

使用上述所概述的方法将需要管理权,一个实用工具,这似乎是规避这可以找到 在这里,.如果你喜欢冒险的感觉C++/Win32 源代码 可供你细读。(检查功能的'ReadPhysicalDriveInNTWithZeroRights()')

其他提示

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

下面是代码以获得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

希望它帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top