如何获得PC唯一ID?

时间:2011-09-26 03:18:58

标签: vb.net visual-studio-2005 unique-key

  1. 什么是PC唯一ID?
  2. 我们怎样才能获得PC unqiue ID?
  3. 是关于硬盘还是主板?
  4. 我想在我的窗口程序中存储PC ID。请与我分享。

5 个答案:

答案 0 :(得分:6)

这项工作对我来说

Private Function CpuId() As String
    Dim computer As String = "."
    Dim wmi As Object = GetObject("winmgmts:" & _
        "{impersonationLevel=impersonate}!\\" & _
        computer & "\root\cimv2")
    Dim processors As Object = wmi.ExecQuery("Select * from " & _
        "Win32_Processor")

    Dim cpu_ids As String = ""
    For Each cpu As Object In processors
        cpu_ids = cpu_ids & ", " & cpu.ProcessorId
    Next cpu
    If cpu_ids.Length > 0 Then cpu_ids = _
        cpu_ids.Substring(2)

    Return cpu_ids
End Function

请参阅here

答案 1 :(得分:0)

“PC唯一ID”通常表示用于唯一标识计算机的硬件ID。例如,它们可用于跟踪计算机上的软件使用情况。

根据this question,“主板ID,处理器ID和bios id”“最不可能改变”。

This question包含用C#获取此类信息的代码;遗憾的是,我找不到VB.NET的任何主题,但它应该很容易移植。

答案 2 :(得分:0)

试试这个,它会从处理器中取出ID。

Dim win32MgmtClass as System.Management.ManagementClass
win32MgmtClass = new System.Management.ManagementClass("Win32_Processor")
Dim processors as System.Management.ManagementObjectCollection
processors = win32MgmtClass.GetInstances()

For Each processor As System.Management.ManagementObject In processors
    MessageBox.Show(processor("ProcessorID").ToString())
Next

答案 3 :(得分:0)

我假设您要生成一台机器特有的ID。硬盘驱动器可能是最简单的方法,因为其他硬件太多样化,无法设置检索序列号的方法。

最简单的方法是使用Windows为硬盘驱动器生成的数字。

您可以在HKEY_LOCAL_MACHINE \ SYSTEM \ MountedDevices下找到它 并且密钥名称是\ DosDevices \ C :(假设C:驱动器是主系统驱动器 - 在一些非常罕见的情况下不是这种情况,但是您可以检查系统驱动器是什么并使用适当的密钥)。

还有另一个与硬盘驱动器相关联的号码,称为UUID,你可以找到脚本来实现它。例如:Windows http://www.windowsnetworking.com/articles_tutorials/Deploying-Windows-7-Part18.html。或http://blog.granneman.com/2007/07/26/find-out-a-hard-drives-uuid/ for Linux。

我还发现了这篇关于检索主板序列号的文章:Getting motherboard unique ID number thru vc++ programming

答案 4 :(得分:0)

需要 https://www.nuget.org/packages/System.Management/

System.Management 4.7.0

如您所见,这里有一个“唯一值”以及一些特殊的计算。您可以尽力做到这一点,但是反向工程最终可以揭示这一点。

更好(但速度较慢)的计算机ID版本(需要System.Management导入和引用): 代码:

    Public Shared Function GetComputerID() As Long
        Dim objMOS As New ManagementObjectSearcher("Select * From Win32_Processor")
        For Each objMO As Management.ManagementObject In objMOS.Get
            GetComputerID += objMO("ProcessorID").GetHashCode
        Next
        GetComputerID += My.Computer.Name.GetHashCode
    End Function