大富翁论坛版权所有
问题:求:在win nt中获网卡MAC地址的方法和修改MAC地址的方法。谢谢!!! ( 积分:100, 回复:6, 阅读:77 )
分类:局域网 / 通讯 ( 版主:netwind, cAkk )
来自:dos2000, 时间:2001-5-29 12:16:00, ID:545507 [显示:小字体 | 大字体]
求:在win nt中获网卡MAC地址的方法和修改MAC地址的方法。谢谢!!!
来自:pbuild, 时间:2001-5-29 12:23:00, ID:545514
winexec(pchar('command.com /C ipconfig /all >'+' c:/temp.txt'),sw_hide)
获取信息保存在c:/temp.txt中
来自:honestman, 时间:2001-5-29 12:31:00, ID:545517
获网卡MAC地址的方法
http://www.delphibbs.com/delphibbs/dispq.asp?lid=541922
修改MAC地址的方法
http://www.delphibbs.com/delphibbs/dispq.asp?lid=387406
来自:freecom, 时间:2001-5-29 12:30:00, ID:545521
Mac地址改不了,出厂就固定了。
来自:terry_lzs, 时间:2001-5-29 12:50:00, ID:545545
获得MAC地址
unit Unit1;
interface
uses
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;
Netbios(@ncb);
Netbios(@ncb);
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Chr(NCBAstat);
ncb.ncb_lana_num := lanaEnum.lana;
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.
修改MAC地址?好像不行吧
来自:dos2000, 时间:2001-5-29 17:26:00, ID:545938
感谢各位大侠的关心,我在WINNT上就亲自改过MAC地址。重新启动后就是新地址了,但我想用程序来实现。不知道谁能帮我? :)
来自:wys205, 时间:2001-5-29 18:34:00, ID:546011
自己在程序中修改注册表嘛,不过要重启动才能生效。
//以下是修改注册表的方法
在Win9x和winnt 3.5、4.0下,网卡驱动程序使用NDIS规范与操作系统通信。MAC地址被
存储在操作系统的某存储单元内,这时可以通过修改该内容达到目的而不用修改你的
EPROM内容。
1、首先打开注册表,找到HKEY_LOCAL_MACHINE/system/Currentcontrolset/services/
classes/net/0000、0001、0002等下,观察DriverDesc内容为你要修改的网卡的描述。
2、在其下,添一个字符串,名字为NetworkAddress,值设为你要的MAC地址,要连续写。
如004040404040。
3、然后到其下 NDI/params中加一项NetworkAddress的主键,在该主键下添加名为
default的字符串,其值写你要设的mac地址,要连续的写,如004040404040。
4、在NetworkAddress的主键下继续添加名为ParamDesc的字符串,其作用为指定Network-
Address主键的描述,其值可为“MAC Address”,这样以后打开网络邻居的属性,双击
相应网卡项会发现有一个高级设置,其下存在MAC Address 的选项,就是你在注册表中
加的新项NetworkAddress,以后只要在此修改MAC地址就可以了。
5、关闭注册表,重新启动,你的网卡地址已改。打开网络邻居的属性,双击相应网卡项会
发现有一个MAC Address的高级设置项。用于直接修改MAC地址。