如何能取的网卡修改前的物理地址(100分)

  • 主题发起人 bxp780921
  • 开始时间
B

bxp780921

Unregistered / Unconfirmed
GUEST, unregistred user!
在网卡修改物理地址后,我现在要取出修改前出厂的物理地址,不管网卡物理地址如何修改,始终是取的出厂的网卡的唯一物理地址.
 
就是取网卡不可修改的物理地址.
 
有人知道吗,求高手指点
 
物理地址都已经修改了,那不可能取到原地址
物理修改是直接对原地址复盖的
 
目前实际能取到原地址,PB中调用了一个Pslib5.dll,他能取出来啊,把原来的地址修改后,在调用这个DLL就可以读出原来的地址,但是,这个Pslib5.dll没有函数说明,里边参数搞不定
 
能不能对Pslib5.dll进行详细的使用说明,求救了
 
那就说明你这个不是物理地址修改。。。。并没有真正对网卡里的地址改了
 
修改网卡物理地址没有弄过,只是以前大学的时候,实行物理地址绑定,当时有同学手动改过。没有写程序来修改过。
 
http://www.xy-365.com/company/s_4044.htm
 
在本地连接中修改后,在CMD中显示物理地址修改了
 
XP下能直接修改,但读物理地址的时候是读的修改过的,读不到原来的物理地址,能不能写一下读原来物理地址的.
 
有没有对Pslib5.dll使用的说明书
 
unit IPHlpAPI;
interface
uses
Windows,SysUtils,Classes;
const
MAX_ADAPTER_DESCRIPTION_LENGTH=128;
MAX_ADAPTER_NAME_LENGTH=256;
MAX_ADAPTER_ADDRESS_LENGTH=8;
DEFAULT_MINIMUM_ENTITIES=32;
MAX_HOSTNAME_LEN=128;
MAX_DOMAIN_NAME_LEN=128;
MAX_SCOPE_ID_LEN=256;
ERROR_NO_DATA:LongInt=232;
ERROR_NOT_SUPPORTED:LongInt=50;
ERROR_INVALID_PARAMETER:LongInt=87;
ERROR_BUFFER_OVERFLOW:LongInt=111;
type
time_t=Integer;
IP_ADDRESS_STRING=packed record
Addr:array [0..15] of Char;
end;
PIP_ADDRESS_STRING=^IP_ADDRESS_STRING;
IP_MASK_STRING=IP_ADDRESS_STRING;
PIP_MASK_STRING=^IP_MASK_STRING;
PIPAdapterInfo=^TIPAdapterInfo;
TIPAdapterInfo=packed record
Next:pIPAdapterInfo;//下一个节点的指针
ComboIndex:DWORD;
AdapterName:array [0..MAX_ADAPTER_NAME_LENGTH + 3] of Char;
//适配器名称
Description:array [0..MAX_ADAPTER_DESCRIPTION_LENGTH + 3] of Char;
//适配器描述信息
AddressLength:UINT;//Address域的最大长度,传递MAX_ADAPTER_ADDRESS_LENGTH常量即可
Address:array [0..MAX_ADAPTER_ADDRESS_LENGTH-1] of Byte;//适配器物理地址
Index:DWORD;
uType:UINT;
DhcpEnabled:UINT;
CurrentIpAddress:pIP_ADDRESS_STRING;
IpAddressList:IP_ADDRESS_STRING;
GatewayList:IP_ADDRESS_STRING;
DhcpServer:IP_ADDRESS_STRING;
HaveWins:BOOL;
PrimaryWinsServer:IP_ADDRESS_STRING;
SecondaryWinsServer:IP_ADDRESS_STRING;
LeaseObtained:time_t;
LeaseExpires:time_t;
end;

//此函数功能最强大,而且只要求网卡在系统中可用,并不要求一定连接上网络
function GetAdaptersInfo(Buf:pIPAdapterInfo;var BufLen:ULONG):DWORD;stdcall;
implementation
function GetAdaptersInfo;external 'iphlpapi.dll' name 'GetAdaptersInfo';
end.
这段代码如何调用,请高手给写个调用方法
 
根据上面那个贴子的定义,从我以前的C++代码里移植过来的:
function GetMACAddress: string;
var
pAdapterInfo, pAdapter: PIPAdapterInfo;
dwRetVal, ulOutBufLen: DWORD;
begin
Result := '';
ulOutBufLen := Sizeof(TIPAdapterInfo);
GetMem(pAdapterInfo, ulOutBufLen);
//第一次调用,用于获取正确的Buffer长度
if (GetAdaptersInfo( pAdapterInfo, ulOutBufLen) = ERROR_BUFFER_OVERFLOW) then
begin
Dispose(pAdapterInfo);
GetMem(pAdapterInfo, ulOutBufLen);
end;

dwRetVal := GetAdaptersInfo(pAdapterInfo, ulOutBufLen);
if (dwRetVal = NO_ERROR) then
begin
pAdapter := pAdapterInfo;
if (pAdapter <> nil) then
begin
Result := Format('%.2x-%.2x-%.2x-%.2x-%.2x-%.2x',
[pAdapter.Address[0], pAdapter.Address[1], pAdapter.Address[2],
pAdapter.Address[3], pAdapter.Address[4], pAdapter.Address[5]]);
end;
end;
FreeMem(pAdapterInfo);
end;
 
谢谢大哥,这个能读MAC地址了,但修改MAC地址后,他读的是修改后的MAC地址,修改前的地址读不到.我现在是想读修改前的MAC地址.关于网卡MAC地址不可修改的情况是存在的,也就是说网卡我们所看到的修改物理地址都是不修改网卡的原始地址的.只修改系统的注册表或其他什么的.有没有可能读到修改前的物理地址.在PB中提供了一个Pslib5.dll动态库他可以实现我刚才说的情况,但这个动态库没有详细的资料,函数和参数搞不清楚,能不能给我搞一下这个DELPHI下的使用说明,谢谢了
 
接受答案了.
 
顶部