社区
网络编程
帖子详情
Netbios取MAC地址,当拔下网线后就取不到了,有没有别的办法取MAC地址?
CloudWater
2003-12-08 09:47:10
如题
...全文
154
7
打赏
收藏
Netbios取MAC地址,当拔下网线后就取不到了,有没有别的办法取MAC地址?
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
门吹西风
2004-02-23
打赏
举报
回复
注册表可以吗???
jawibn
2004-02-23
打赏
举报
回复
原来是本机MAC呀,注册表当然行,或者用COM
jawibn
2004-02-23
打赏
举报
回复
拔下网线后取MAC地址有一个方法吧:梦中取
fbmsf
2004-02-23
打赏
举报
回复
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming >
; by 罗云彬, http://asm.yeah.net
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; NetInfo.asm
; 获取本地计算机的网络配置信息
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff NetInfo.asm
; rc NetInfo.rc
; Link /subsystem:windows NetInfo.obj NetInfo.res
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include IpTypes.inc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN equ 1000
DLG_MAIN equ 1000
IDC_ADPT equ 1001
IDC_TYPE equ 1002
IDC_MAC equ 1003
IDC_IP equ 1004
IDC_GATEWAY equ 1005
IDC_WINS equ 1006
IDC_DHCP equ 1007
IDC_REFRESH equ 1008
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
hInstance dd ?
hWinMain dd ?
hDll dd ?
lpGetInfo dd ?
dwStructSize dd ?
lpInfo dd ?
lpMemory dd ?
szBuffer db 1024 dup (?)
szBuffer1 db 1024 dup (?)
.const
szDll db 'Iphlpapi.dll',0
szGetInfo db 'GetAdaptersInfo',0
szErrNoAdapter db '没有安装网络适配器!',0
szNA db 'N/A',0
szMac db '%02X:%02X:%02X:%02X:%02X:%02X',0
szSpar db '/',0
szCrLf db 0dh,0ah,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 将IP地址字符串整理到缓冲区中
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetIPString proc _lpIP,_lpOut,_dwSize,_dwIfMask
pushad
invoke RtlZeroMemory,_lpOut,_dwSize
mov esi,_lpIP
assume esi:ptr IP_ADDR_STRING
@@:
.if byte ptr [esi].IpAddress
invoke lstrcat,_lpOut,addr [esi].IpAddress
.if (byte ptr [esi].IpMask) && _dwIfMask
invoke lstrcat,_lpOut,addr szSpar
invoke lstrcat,_lpOut,addr [esi].IpMask
.endif
.endif
mov esi,[esi].Next
.if esi
invoke lstrcat,_lpOut,addr szCrLf
jmp @B
.endif
assume esi:nothing
popad
ret
_GetIPString endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ShowInfo proc
pushad
mov esi,lpInfo
;********************************************************************
; 根据有没有下一个适配器激活或灰化“下一个”按钮
;********************************************************************
assume esi:ptr IP_ADAPTER_INFO
.if [esi].Next
invoke GetDlgItem,hWinMain,IDOK
invoke EnableWindow,eax,TRUE
.else
invoke GetDlgItem,hWinMain,IDOK
invoke EnableWindow,eax,FALSE
.endif
invoke SetDlgItemText,hWinMain,IDC_ADPT,addr [esi].Description
invoke SetDlgItemInt,hWinMain,IDC_TYPE,[esi]._Type,FALSE
;********************************************************************
; 转换 MAC 地址
;********************************************************************
lea edi,[esi].Address
mov ebx,6
.while ebx
movzx eax,byte ptr [edi+ebx-1]
push eax
dec ebx
.endw
invoke wsprintf,addr szBuffer,addr szMac
add esp,6 * 4
invoke SetDlgItemText,hWinMain,IDC_MAC,addr szBuffer
;********************************************************************
; 转换 IP 地址、网关、DHCP 等信息
;********************************************************************
invoke _GetIPString,addr [esi].IpAddressList,addr szBuffer,sizeof szBuffer,TRUE
invoke SetDlgItemText,hWinMain,IDC_IP,addr szBuffer
invoke _GetIPString,addr [esi].GatewayList,addr szBuffer,sizeof szBuffer,FALSE
.if szBuffer
invoke SetDlgItemText,hWinMain,IDC_GATEWAY,addr szBuffer
.endif
.if [esi].DhcpEnabled
invoke _GetIPString,addr [esi].DhcpServer,addr szBuffer,sizeof szBuffer,FALSE
invoke SetDlgItemText,hWinMain,IDC_DHCP,addr szBuffer
.endif
.if [esi].HaveWins
invoke _GetIPString,addr [esi].PrimaryWinsServer,addr szBuffer,sizeof szBuffer,FALSE
invoke _GetIPString,addr [esi].SecondaryWinsServer,addr szBuffer1,sizeof szBuffer,FALSE
.if szBuffer1
invoke lstrcat,addr szBuffer,addr szCrLf
invoke lstrcat,addr szBuffer,addr szBuffer1
.endif
invoke SetDlgItemText,hWinMain,IDC_WINS,addr szBuffer
.endif
assume esi:nothing
popad
ret
_ShowInfo endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetInfo proc
;********************************************************************
; 分配一块 IP_ADAPTER_INFO 结构大小的内存
;********************************************************************
.if lpMemory
invoke GlobalFree,lpMemory
mov lpMemory,0
.endif
mov ebx,IDC_ADPT
.while ebx <= IDC_DHCP
invoke SetDlgItemText,hWinMain,ebx,addr szNA
inc ebx
.endw
invoke GetDlgItem,hWinMain,IDOK
invoke EnableWindow,eax,FALSE
invoke GlobalAlloc,GPTR,sizeof IP_ADAPTER_INFO
.if eax
mov lpMemory,eax
mov dwStructSize,sizeof IP_ADAPTER_INFO
@@:
push offset dwStructSize
push lpMemory
call lpGetInfo
;********************************************************************
; 如果缓冲区不够大,则重新修改内存块的大小
;********************************************************************
.if eax == ERROR_BUFFER_OVERFLOW
invoke GlobalReAlloc,lpMemory,dwStructSize,GMEM_MOVEABLE
.if ! eax
jmp @F
.endif
mov lpMemory,eax
jmp @B
.elseif eax == ERROR_SUCCESS
push lpMemory
pop lpInfo
invoke _ShowInfo
.elseif eax == ERROR_NO_DATA
invoke MessageBox,NULL,addr szErrNoAdapter,NULL,MB_OK or MB_ICONWARNING
.endif
.endif
@@:
ret
_GetInfo endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam
mov eax,wMsg
;********************************************************************
.if eax == WM_COMMAND
mov eax,wParam
.if ax == IDOK
mov eax,lpInfo
mov eax,[eax]
mov lpInfo,eax
invoke _ShowInfo
.elseif ax == IDC_REFRESH
invoke _GetInfo
.endif
;********************************************************************
.elseif eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
;********************************************************************
.elseif eax == WM_INITDIALOG
push hWnd
pop hWinMain
invoke LoadIcon,hInstance,ICO_MAIN
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
invoke _GetInfo
;********************************************************************
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlgMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
invoke LoadLibrary,addr szDll
.if eax
mov hDll,eax
invoke GetProcAddress,eax,offset szGetInfo
.if eax
mov lpGetInfo,eax
.endif
.endif
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
Chien
2004-02-22
打赏
举报
回复
我现在很需要这个啊。可以发给我吗?
yejianhui@21cn.com
tiger_qi
2003-12-10
打赏
举报
回复
GetAdapterInfo(....)
留下mail给你例子
ZHENG017
2003-12-08
打赏
举报
回复
不用NetBios的话,只适用于win2k以上:
SendARP
获
取
网卡的
MAC地址
的方法.docx
Net
bios
(Network Basic Input/Output System)是一种允许应用程序通过网络进行通信的协议,但其主要缺点是在
网线
拔出的情况下无法获
取
到
MAC地址
,这限制了它的实用性。SNMP(Simple Network Management Protocol)...
VC 获
取
物理网卡的
MAC地址
经过测试发现 Net
bios
方法在
网线
拔出的情况下获
取
不到
MAC,而 SNMP 方法有时会获
取
多个重复的网卡的MAC,试来试去还是 GetAdaptersInfo 方法比较好,
网线
拔出的情况下可以获
取
MAC,而且很准确,不会重复获
取
网卡。...
c++获
取
网卡
MAC地址
一台机器上可能有多个网卡,每一个网卡只有一个
MAC地址
,但是每一个网卡可能配置有多个IP地址;如平常的笔记本电脑中,就会有无线网卡和有线网卡(
网线
接口)两种;因此,如果要获得本机所有网卡的IP和
MAC地址
信息,...
VC获
取
物理网卡的
MAC地址
经过测试发现 Net
bios
方法在
网线
拔出的情况下获
取
不到
MAC,而 SNMP 方法有时会获
取
多个重复的网卡的MAC,试来试去还是 GetAdaptersInfo 方法比较好,
网线
拔出的情况下可以获
取
MAC,而且很准确,不会重复获
取
网卡。...
转载:VC 获
取
物理网卡的
MAC地址
文章来源:...经过测试发现 Net
bios
方法在
网线
拔出的情况下获
取
不到
MAC,而 SNMP方法有时会获
取
多个重复的网卡的MAC,试来试去还是 GetAdaptersInfo方法比较好,
网线
拔出...
网络编程
18,357
社区成员
64,164
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章