操作系统为XP1.如何准确得到mac地址?
网上流传的程序有很大局限性,要么每次开机地址都会变,要么集成网卡就找不到地址,而且有的还必须安装NetBUI协议才行.
有没有一种稳定可靠的方法能准确得到自己的网卡mac地址?
2.如何得到BIOS序列号(或称主板序列号)?网上的资料大都FOR98的.
网上流传的程序有很大局限性,要么每次开机地址都会变,要么集成网卡就找不到地址,而且有的还必须安装NetBUI协议才行.
有没有一种稳定可靠的方法能准确得到自己的网卡mac地址?
2.如何得到BIOS序列号(或称主板序列号)?网上的资料大都FOR98的.
解决方案 »
- delphi中 怎么在一个库单元文件中调用另一个库单元文件的form(form要显示出来)
- 这个是怎么回事,照大家说的改过了,代码还是有错,大家帮一下我呀
- 如何知道窗体名
- 如何定位文件路径?在线等,送100分,问题不难,不过我不会,呵呵!
- 要二个算法的例子
- 一个严重的开发语言骑视问题,DELPHI并不差,为什么应骋时。。。。。
- Canvas does not allow drawing!
- 闪烁窗口怎么实现,有高分,在线等待!!!
- 与类型有关的问题
- 如何把一个过程放到服务器上执行,并把结果返回到本地机上(不用存储过程,我用Delphi).
- 请教高手 给出一个限制条件后判断在DBGrid1中显示
- 字符串操作的问题
2000,xp,2003下取BIOS信息要提权ring0procedure TfrmMain.btnRunClick(Sender: TObject);
begin
memResult.lines.add('您的第'+edtAdapterNum.text+'个适配器的MAC地址为'+NBGetAdapterAddress(StrtoInt(edtAdapterNum.Text)));
end;
function TfrmMain.NBGetAdapterAddress(adapterNum: integer): String;
//adapter00为指定的网卡适配器
Var
NCB:TNCB; // NetBios控制块
ADAPTER : TADAPTERSTATUS; // 获取网卡状态
LANAENUM : TLANAENUM; // Netbios lana
intIdx : Integer; // 临时变量
cRC : Char; // NetBios返回值
strTemp : String; // 临时变量Begin
Result := '';
Try
// 清空控制块
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command:=Chr(NCBENUM);
cRC := NetBios(@NCB); // 重新设置enum命令
NCB.ncb_buffer := @LANAENUM;
NCB.ncb_length := SizeOf(LANAENUM);
cRC := NetBios(@NCB);
If Ord(cRC)<>0 Then
exit;
// 重新设定网卡
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[adapterNum];
cRC := NetBios(@NCB);
If Ord(cRC)<>0 Then
exit;
// 获取网卡地址
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[adapterNum];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB);
// 将获得信息转换为字符串
strTemp := '';
For intIdx := 0 To 5 Do
strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]),2);
Result := strTemp;
Finally
End;
end;
var Buf: array[0..MAX_PATH] of Char;
Path,Cmd,S:string;
F:TextFile;
begin
GetWindowsDirectory(Buf,MAX_PATH);
if string(Buf)[Length(string(Buf))]<>'\' then
Path:=string(Buf)+'\'
else
Path:= string(Buf);
if FileExists(Path+'GatDns.txt') then DeleteFile(Path+'GatDns.txt');
Cmd:='command.com /c ipconfig /all > '+Path+'GatDns.txt';
Winexec(pchar(Cmd),sw_hide);
while not FileExists(Path+'GatDns.txt') do
begin
Sleep(300);
end;
if FileExists(Path+'GatDns.txt') then
sleep(300);
try
AssignFile(F,Path+'GatDns.txt');
Reset(F);
while not Eof(F) do
begin
Readln(F, S);
if pos('Physical Address. . . . . . . . . :',s) <> 0 then
begin
S:=Trim(S);
Delete(S,1,pos(':',S));
Result:=Trim(S);
CloseFile(F);
DeleteFile(Path+'GatDns.txt');
Exit;
end;
end;
CloseFile(F);
DeleteFile(Path+'GatDns.txt');
except
Result:=''
end;
end;
1.不装NETGUI协议就不行
2.集成网卡不行.