获取硬盘ID。为什么老报错T^T

ZhongCool 2014-10-19 10:31:10
为什么我用VB.NET 2010弄这个老报错,求大神指点!
Imports System.Management
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = GetDiskID()
End Sub

Function GetDiskID() As String
Try
Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
Dim strHardDiskID As String = ""
For Each mo As ManagementObject In searcher.Get()
strHardDiskID = mo.Properties("SerialNumber").Value.ToString
strHardDiskID = strHardDiskID.Replace(" ", "")
Exit For
Next
Return strHardDiskID
Catch
Return "unknow"
End Try
End Function

End Class
...全文
220 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
平头哥哥 2014-10-24
  • 打赏
  • 举报
回复
debug.print(err.****)
winnowc 2014-10-19
  • 打赏
  • 举报
回复
你的代码取了所有的Win32_PhysicalMedia,这里面可能会存在SerialNumber为空的设备(比如光驱),就会错了。应该是判断下,取那个不是空值的。 不过其实还需要判断下取到序列号的设备是不是硬盘。如果硬盘设备的序列号为空(这是有可能的),那还得用别的办法,比如Win32_DiskDrive的Signature,不过其实这个值也可能是会变的。如果是做机器绑定认证,一般最好综合多种信息来判断,比如Win32_BIOS的SerialNumber,Win32_BaseBoard的SerialNumber,Win32_Processor的ProcessorId,还有网卡MAC等等。
threenewbee 2014-10-19
  • 打赏
  • 举报
回复
Catch err As Exception MessageBox.Show(err.Message) 先看下具体什么错 估计是权限问题。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧