Vb6 如何列出多核处理器(带WMI)中的所有CPU ID?

Vb6 如何列出多核处理器(带WMI)中的所有CPU ID?,vb6,cpu,processor,Vb6,Cpu,Processor,我使用下面的vb6代码获取当前运行的cpu id Dim CpuId As String Dim objWMIService, colItems, objItem Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor") For Each obj

我使用下面的vb6代码获取当前运行的cpu id

     Dim CpuId As String
     Dim objWMIService, colItems, objItem

     Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
     Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")

     For Each objItem In colItems
     CpuId = objItem.ProcessorId

     Next

     msgbox cpuid
这对于单cpu处理器来说效果很好。 但是现在很多计算机都有多处理器、双核、内核i3等。 如何列出所有现有的处理器ID


我正在使用处理器id为我的软件进行授权,当客户端计算机将处理器切换到我未注册的处理器时,授权机器将被声明为未授权。

您使用的查询应获取机器上的所有物理处理器。如果您的软件确实安装在多处理器机器上,您可以始终注册所有处理器ID。否则,快速实验会在我的双核笔记本电脑上返回一个单处理器ID

MSDN ProcessorID文档:

处理者

Data type: string
Access type: Read-only

Processor information that describes the processor features.
对于x86类CPU,字段格式取决于 CPUID指令。如果支持该指令,则属性 包含2(两)个DWORD格式的值。第一个是偏移量 08h-0Bh,这是CPUID指令返回的EAX值 输入EAX设置为1。第二个是0Ch-0Fh的偏移量,这是 指令返回的EDX值。只有前两个字节的 属性是重要的,包含DX的内容 CPU复位时的寄存器所有其他设置为0(零),并且内容 是DWORD格式的

结果:


如果您还没有,可以在这里找到Win23_处理器类文档

我希望每个物理处理器有一个CPU ID。我不希望看到每个核心都有一个。您只能找到一个处理器中的内核数(请参阅)。我不希望看到每个内核都有一个。。。我可能错了,但显然cpu id在多核场景中确实会发生变化。然后我必须等待客户打电话给我,以便为他们注册另一个cpu-id。我希望有经验的人能为我澄清。我对此表示感谢。唯一的问题是,除了笔记本电脑中显示的BFEBFBFF000010676之外,还有另一个处理器ID。我希望有一个代码或某种方式从一开始就知道处理器id是什么。问题是我们如何循环另一个处理器?@webzy我相信你错了。它似乎是1个处理器,具有1个ID和2个(在本例中)内核。谢谢。我的多个ID的来源似乎来自另一个来源。。。。读取磁盘驱动器id以生成复合id…“从Win32_physicalMedia中选择*”。你的回答帮助我更好地检查我的编码。
Private Sub GetInformation()
    Dim CpuId As String
    Dim objWMIService, colItems, objItem

    List1.Clear
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")

    'this loop runs once for each physical processor
    For Each objItem In colItems
        List1.AddItem "Processor description: " & objItem.Description
        List1.AddItem "Processor name: " & objItem.Name
        List1.AddItem "Processor ID: " & objItem.ProcessorId
        List1.AddItem "Device ID: " & objItem.DeviceID
        List1.AddItem "Unique ID: " & objItem.UniqueId
        List1.AddItem "Number of cores: " & objItem.NumberOfCores
        List1.AddItem "Number if Logical processors: " & objItem.NumberOfLogicalProcessors
    Next

End Sub