如何检测电脑的网卡型号及已安装网卡的数量,并能对指定的网卡实行禁用

解决方案 »

  1.   

    关于Win 2K修改MACREGEDIT4 
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000] 
    "networkaddress"="444553540000" 
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000\Ndi\params\networkaddress] 
    "default"="444553540000" 
    "paramdesc"="MAC Address" 
    网卡编号代表网卡型号,不一定是0000,究竟是什么编号,可以这样查找: 
    运行\winnt\regedit.exe,找到注册表项 
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000] 
    右边栏目有一字符串值"DriverDesc",它的值即是网卡型号,看是不是你的网卡; 
    再找 
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0001] 
    直到找到你的网卡,记下网卡的编号:一定是000X(X是整数),如0007 
    然后将上述Win 2K注册表中的"\0000"改为相应的"\0007"(有两处),再进行其它操作. 
    恢复原始网卡MAC地址: 请删除字符串值"networkaddress"和主键"networkaddress". 
    NT下修改MAC: 
    REGEDIT4 
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HPHX1\Parameters] 
    "NetworkAddress"="131353540000" 
     注意:上述注册表文件中HPHX1是具体的网卡型号,各位网友请根据自已的型号修改,修改方法: 
     在NT的窗口DOS下运行: 
     ipconfig -all 
     它将显示网卡的型号和MAC(物理)地址等信息,注意看Ethernet adapter 后面的字符串就是网卡型号。 
     如果要恢复NT下网卡的原始MAC地址,请将字符串主键"networkaddress"的值清空
      

  2.   

    获得MAC地址
    unit Unit1;interfaceuses
     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
     StdCtrls,nb30;
    type
    PASTAT = ^TASTAT;
     TASTAT = record
       adapter : TAdapterStatus;
       name_buf : TNameBuffer;
     end;
    type
     TForm1 = class(TForm)
       Button1: TButton;
       Label1: TLabel;
       procedure Button1Click(Sender: TObject);
     private
     function Getmac:string;
       { Private declarations }
     public
       { Public declarations }
     end;var
     Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
    label1.caption:=Getmac;
    end;function TForm1.Getmac:string;
    var
     ncb : TNCB;
     s:string;
     adapt : TASTAT;
     lanaEnum : TLanaEnum;
     i, j, m : integer;
     strPart, strMac : string;
    begin
    FillChar(ncb, SizeOf(TNCB), 0);
     ncb.ncb_command := Char(NCBEnum);
     ncb.ncb_buffer := PChar(@lanaEnum);
     ncb.ncb_length := SizeOf(TLanaEnum);
     s:=Netbios(@ncb);
     for i := 0 to integer(lanaEnum.length)-1 do
     begin
       FillChar(ncb, SizeOf(TNCB), 0);
       ncb.ncb_command := Char(NCBReset);
       ncb.ncb_lana_num := lanaEnum.lana[i];
       Netbios(@ncb);
       Netbios(@ncb);
       FillChar(ncb, SizeOf(TNCB), 0);
       ncb.ncb_command := Chr(NCBAstat);
       ncb.ncb_lana_num := lanaEnum.lana[i];
       ncb.ncb_callname := '*               ';
       ncb.ncb_buffer := PChar(@adapt);
       ncb.ncb_length := SizeOf(TASTAT);
       m:=0;
       if (Win32Platform = VER_PLATFORM_WIN32_NT) then
       m:=1;
       if m=1 then
       begin
       if Netbios(@ncb) = Chr(0) then
         strMac := '';
         for j := 0 to 5 do
         begin
           strPart := IntToHex(integer(adapt.adapter.adapter_address[j]), 2);
           strMac := strMac + strPart + '-';
         end;
         SetLength(strMac, Length(strMac)-1);
       end;
     if m=0 then
       if Netbios(@ncb) <> Chr(0) then
       begin
         strMac := '';
         for j := 0 to 5 do
         begin
           strPart := IntToHex(integer(adapt.adapter.adapter_address[j]), 2);
           strMac := strMac + strPart + '-';
         end;
         SetLength(strMac, Length(strMac)-1);
       end;
     end;
    result:=strmac;
    end;
    end.
      

  3.   

    http://expert.csdn.net/Expert/topic/2839/2839946.xml?temp=.1469232  超级猛料出新版了
    我剛巧在這裹面, 看到了你想要的!!!!