2

我使用来自http://www.rgagnon.com/javadetails/java-0580.html的代码来获取主板 ID,但结果为“null”。

  1. 怎么可能?

  2. 我还稍微修改了代码,使其看起来像这样以获取 ProcessorId:

    "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"+
                 "Set colItems = objWMIService.ExecQuery _ \n"+
                 "   (\"Select * from Win32_Processor\") \n"+
                 "For Each objItem in colItems \n"+
                 "    Wscript.Echo objItem.ProcessorId \n"+
                 "    exit for  ' do the first cpu only! \n"+
                 "Next \n";
    

结果是这样的:ProcessorId = BFEBFBFF00010676

http://msdn.microsoft.com/en-us/library/aa389273%28VS.85%29.aspx上它说:

ProcessorId:描述处理器功能的处理器信息。对于 x86 类 CPU,字段格式取决于 CPUID 指令的处理器支持。如果支持该指令,则该属性包含 2(两个)DWORD 格式的值。第一个是偏移量 08h-0Bh,这是 CPUID 指令在输入 EAX 设置为 1 时返回的 EAX 值。第二个是偏移量 0Ch-0Fh,这是指令返回的 EDX 值。只有属性的前两个字节是有效的,并且包含 CPU 复位时 DX 寄存器的内容——所有其他字节都设置为 0(零),并且内容为 DWORD 格式。

我不太明白;用简单的英语来说,它是唯一的还是只是此类处理器的一个数字,例如所有 Intel Core2 Duo P8400 都会有这个数字?

4

1 回答 1

3

eax 设置为 1 时,cpuid 操作码将返回 eax 中的处理器类型、系列等,以及 edx 中的处理器功能。所以你得到的不是唯一的东西,比如 CPU 序列号。

于 2010-03-12T22:29:48.703 回答