如何在VB.NET中读取IDE和SATA驱动器的硬盘序列号? (我不想要卷序列号。)
如果没有管理权限,应该为XP和Vista收集此信息。
答案 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
希望它有所帮助。