我试图在vb.net代码中获得一个设备唯一标识符。我试过了
Private Function SystemSerialNumber() As String
Dim value As String = ""
Dim baseBoard As ManagementClass = New ManagementClass("Win32_BaseBoard")
Dim board As ManagementObjectCollection = baseBoard.GetInstances()
If board.Count > 0 Then
value = board(0)("SerialNumber")
If value.Length > 0 Then value = value.Substring(2)
End If
Return value
End Function
它可以在一些计算机上工作,但是板上没有序列号,它返回“默认字符串”或它们放进去的任何东西。甚至尝试了用Win32_Processor,有些有它,而另一些只是返回“被OE.M”lol填充
也尝试过,
Private Function SystemSerialNumber() As String
Dim value As String
Dim q As New SelectQuery("Win32_bios")
Dim search As New ManagementObjectSearcher(q)
Dim info As New ManagementObject
For Each info In search.Get
value = info("SerialNumber").ToString
Return value
Next
End Function
但这也是一样的,有些设备拥有它,有些设备没有,只是返回默认字符串。
所以我现在尝试的是:
Private Function SystemSerialNumber() As String
Dim value As String
value = Windows.System.Profile.SystemIdentification.GetSystemIdForPublisher()
End Function
但我在引用它的时候有困难。我试着导入Windows.System,但是它只给出了错误,找不到它。
另外,我在平板电脑上使用这个程序,包括windows10、笔记本电脑和台式机。
更新:我将按照Heinzi的建议使用。谢谢!还更改了变量名以使其更准确。
Private Function NetworkAdapterMacAddress() As String
Dim McAddress As String
Dim netadapter As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim mo As ManagementObject
Dim adapter As ManagementObjectCollection = netadapter.GetInstances()
For Each mo In adapter
If mo.Item("IPEnabled") = True Then
McAddress = mo.Item("MacAddress").ToString()
Return McAddress
End If
Next
End Function
发布于 2021-04-27 15:33:13
好吧,没有保证的ID可以唯一地识别每台PC (幸运的是,我可能会添加。隐私是一件好事)。
你最好的选择可能是
哦,从哲学的角度来看,你可能需要思考一下特修斯船。
https://stackoverflow.com/questions/67285367
复制相似问题