Pregunta: | 38017 - COMO OBTENER LA DIRECCION MAC DE MI TARJETA DE RED |
Autor: | sergio spampinato |
hola a todos, quisiera saber de que forma puedo obtener la direccion MAC de mi tarjeta de red, les agradeceria si tienen algun codigo en c para sacarla y si no cualquier lenguaje me viene bien o mejor si tienen alguna forma mas estandar asi la puedo sacar con cualquier lenguaje de programacion, es que estoy haciendo un programa en c y necesito alguna forma de obtener esa direccion, saludos y gracias totales |
Respuesta: | Germán Chávez Reátegui |
#include "nb30.h"
// enlazar con netapi32.lib typedef struct _ASTAT_ { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff[30]; } ASTAT, * PASTAT; CString GetMacAddress() { ASTAT ast; NCB ncb; UCHAR uRetCode; memset(&ncb, 0, sizeof(ncb)); ncb.ncb_command = NCBRESET; ncb.ncb_lana_num = 0; uRetCode = Netbios(&ncb); if (uRetCode != 0) { return ""; } memset(&ncb, 0, sizeof(ncb)); ncb.ncb_command = NCBASTAT; ncb.ncb_lana_num = 0; CString strHost; TCHAR szComputer[128]; DWORD dwSize = sizeof(szComputer); if (!GetComputerName(szComputer, &dwSize)) { return ""; } strHost = szComputer; strHost.MakeUpper(); FillMemory(ncb.ncb_callname, NCBNAMSZ - 1, 0x20); strcpy((char *)ncb.ncb_callname, (LPCTSTR)strHost); ncb.ncb_callname[strHost.GetLength()] = 0x20; ncb.ncb_callname[NCBNAMSZ] = 0x0; ncb.ncb_buffer = (unsigned char *) * ncb.ncb_length = sizeof(ast); uRetCode = Netbios(&ncb); if (uRetCode != 0) { return ""; } CString strMacAddress; strMacAddress.Format(_T("%02X%02X%02X%02X%02X%02X"), ast.adapt.adapter_address[0], ast.adapt.adapter_address[1], ast.adapt.adapter_address[2], ast.adapt.adapter_address[3], ast.adapt.adapter_address[4], ast.adapt.adapter_address[5] ); return strMacAddress; } |