如何在 VB.NET 中读取 IDE 和 SATA 驱动器的硬盘序列号?(我不想要卷序列号)。
如果可能,如果没有管理权限,应该为 XP 和 Vista 收集此信息。
如何在 VB.NET 中读取 IDE 和 SATA 驱动器的硬盘序列号?(我不想要卷序列号)。
如果可能,如果没有管理权限,应该为 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)。
本文包含一个下载,其中作者实现了CreateFile()和DeviceIoControl(),以通过 VB .NET 中的 Interop 服务提取驱动器信息。
要使用上述任何一种方法,您都需要管理员权限,可以在此处找到一个似乎可以规避此问题的实用程序。如果您喜欢冒险,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
这是获取硬盘序列号的代码
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
希望能帮助到你。