Question : 
How can I get network card unique ID ? Answer : 
function  _SysGetNICAddress: string; 
var 
  Tmp    : TGUID; 
  tmpstr : string; 
  newstr : string; 
  cnt    : integer; 
begin 
  try 
    CoCreateGuid(Tmp); 
    tmpstr := GuidToString(Tmp); 
    tmpstr := Copy(tmpstr, Length(tmpstr)-12, 12); 
    for cnt := 1 to 5 do 
      newstr := newstr + copy(tmpstr, cnt*2-1, 2) + '-'; 
    newstr := newstr + copy(tmpstr, 11, 2); 
  except 
    newstr := ''; 
  end; 
  Result := newstr; 
end; 
 
 

解决方案 »

  1.   

    如是指物理号,在我的网子上有篇帖子,有两种方法(radsworld.myrice.com)
      

  2.   

    请搜索“网卡”或者“MAC”即可找到答案。
    附加功能:
    提问者:如要继续讨论请定期提前贴子,如不想讨论请结束贴子。
      

  3.   

    Function NBGetAdapterAddress(a:integer) : String; 
    Implementation {$R *.DFM} Procedure TForm1.Button1Click(Sender : TObject); 
    Begin 
      label1.Caption:=NBGetAdapterAddress(StrtoInt(Edit1.Text)); 
    End; Function NBGetAdapterAddress(a:Integer) : String; 
    Var   NCB : TNCB; // Netbios control block //NetBios控制块 
      ADAPTER : TADAPTERSTATUS; // Netbios adapter status//取网卡状态 
      LANAENUM : TLANAENUM; // Netbios lana 
      intIdx : Integer; // Temporary work value//临时变量 
      cRC : Char; // Netbios return code//NetBios返回值 
      strTemp : String; // Temporary string//临时变量 Begin 
      // Initialize 
      Result := '';   Try 
        // Zero control blocl 
        ZeroMemory(@NCB, SizeOf(NCB));     // Issue enum command 
        NCB.ncb_command := Chr(NCBENUM); 
        cRC := NetBios(@NCB);     // Reissue enum command 
        NCB.ncb_buffer := @LANAENUM; 
        NCB.ncb_length := SizeOf(LANAENUM); 
        cRC := NetBios(@NCB); 
        If Ord(cRC)<>0 Then 
          exit;     // Reset adapter 
        ZeroMemory(@NCB, SizeOf(NCB)); 
        NCB.ncb_command := Chr(NCBRESET); 
        NCB.ncb_lana_num := LANAENUM.lana[a]; 
        cRC := NetBios(@NCB); 
        If Ord(cRC)<>0 Then 
          exit;     // Get adapter address 
        ZeroMemory(@NCB, SizeOf(NCB)); 
        NCB.ncb_command := Chr(NCBASTAT); 
        NCB.ncb_lana_num := LANAENUM.lana[a]; 
        StrPCopy(NCB.ncb_callname, '*'); 
        NCB.ncb_buffer := @ADAPTER; 
        NCB.ncb_length := SizeOf(ADAPTER); 
        cRC := NetBios(@NCB);     // Convert it to string 
        strTemp := ''; 
        For intIdx := 0 To 5 Do 
          strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[in 
    tIdx]),2); 
        Result := strTemp; 
      Finally 
      End; 
    End;