请问:如何获取主板的唯一标识?

解决方案 »

  1.   

    我这里收藏一个,看了一下,也是直接读取硬件端口的,估计2000下没戏。
     uses SHA1, Base64;   function GetHashedBiosInfo: string; 
      var 
        SHA1Context: TSHA1Context; 
        SHA1Digest: TSHA1Digest; 
      begin 
        // Get the BIOS data 
        SetString(Result, PChar(Ptr($F0000)), $10000); 
        // Hash the string 
        SHA1Init(SHA1Context); 
        SHA1Update(SHA1Context, PChar(Result), Length(Result)); 
        SHA1Final(SHA1Context, SHA1Digest); 
        SetString(Result, PChar(@SHA1Digest), sizeof(SHA1Digest)); 
        // Return the hash string encoded in printable characters 
        Result := B64Encode(Result); 
      end; 
      function GetBiosInfoAsText: string; 
      var 
        p, q: pchar; 
      begin 
        q := nil; 
        p := PChar(Ptr($FE000)); 
        repeat 
          if q <> nil then begin 
            if not (p^ in [#10, #13, #32..#126, #169, #184]) then begin 
              if (p^ = #0) and (p - q >= 8) then begin 
                Result := Result + TrimRight(String(q)) + #13#10; 
              end; 
              q := nil; 
            end; 
          end else 
            if p^ in [#33..#126, #169, #184] then 
              q := p; 
          inc(p); 
        until p > PChar(Ptr($FFFFF)); 
        Result := TrimRight(Result); 
      end;   procedure TForm1.FormCreate(Sender: TObject); 
      begin 
        Memo1.Lines.Text := GetBiosInfoAsText; 
      end;