怎样才能取得服务器的CPU号码?

解决方案 »

  1.   

    什么服务器,远程的?那估计不行。
    WMI的或者嵌入汇编本机的回复人: minajo21(大眼睛) ( ) 信誉:100  2003-04-15 03:41:00  得分:0 
     
     
      我觉得一定得用地层汇编,高级语言很难完成这是我收藏的一段代码(不是我写的):
    asm
      pushad
      mov eax, 0
      db 0fh, 0a2h              
      mov dword ptr R[0],  ebx
      mov dword ptr R[4],  edx
      mov dword ptr R[8],  ecx
      mov eax, 1
      db 0fh, 0a2h              
      mov CpuID, edx
      popad
    end;
      
     
    回复人: painache() ( ) 信誉:100  2003-04-15 05:57:00  得分:0 
     
     
      Private Type TPROC
        hMem As Long
        vtPtr As Long
    End Type
    Private aProc() As TPROCPrivate Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Sub CpuID(ByVal strBuf As String)
        ' stores CPUID in strBuf (with converting ASCII->UNICODE)
        ' strBuf must be pre-allocated to at least of 12 characters
        I_AM "578B7C240C33C00FA28AC366AB8AC766ABC1EB108AC366AB8AC766AB8BDA8AC366AB8AC766ABC1EB108AC366AB8AC766AB8BD98AC366AB8AC766ABC1EB108AC366AB8AC766AB5F33C0C20800"
    End SubPrivate Sub I_AM(s As String)
        s = Replace$(s, " ", "")
        Dim i As Long, aSize As Long, aB() As Byte
        aSize = Len(s) \ 2    ReDim Preserve aB(1 To aSize)
        For i = 1 To aSize
            aB(i) = Val("&H" & Mid$(s, i * 2 - 1, 2))
        Next
        
        Static cp As Long
        ReDim Preserve aProc(cp)
        Dim hMem As Long, lPtr As Long
        hMem = GlobalAlloc(0, aSize)
        lPtr = GlobalLock(hMem)
        CopyMemory ByVal lPtr, aB(1), aSize
        GlobalUnlock hMem
        
        aProc(cp).hMem = hMem
        aProc(cp).vtPtr = VTable(cp)
        VTable(cp) = lPtr
        cp = cp + 1
    End Sub