怎么给 %02x:%02x:%02x:%02x:%02x:%02xmac测井地址减去一位

下次自動登錄
現在的位置:
& 綜合 & 正文
如何修改wince(s3c2410)的MAC地址?
wince中的MAC地址是在驅動中寫死的。如果不修改會造成一些網絡方面的功能故障。比如不能互ping。
下面是我解決的方法:
1.添加如下註冊表[HKEY_LOCAL_MACHINE/Comm/CS8900/Parms]"MAC12"=dword:3322"MAC34"=dword:5544"MAC56"=dword:0F66
2.修改CS8900驅動在CS8900.c文件中,作如下修改:
WORD iMAC3={0x4,0x0F66};
//添加MAC地址的原始數據
//添加函數,讀取註冊表中的MAC地址的值
void ReadRegsister()
HKEY hkMAC = NULL;
DWORD MAC;
DWORD dwStatus, dwType, dwS
TCHAR gszBaseInstance[256] = _T("//Comm//CS8900//Parms");
dwStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, gszBaseInstance, 0, KEY_ALL_ACCESS, &hkMAC);
dwType = REG_DWORD;
if(dwStatus == ERROR_SUCCESS && dwType == REG_DWORD)
dwSize = sizeof(DWORD);
dwStatus = RegQueryValueEx(hkMAC, _T("MAC12"), NULL, &dwType, (LPBYTE) &MAC, &dwSize);
if (dwStatus == ERROR_SUCCESS)
iMAC[0]=MAC;
dwStatus = RegQueryValueEx(hkMAC, _T("MAC34"), NULL, &dwType, (LPBYTE) &MAC, &dwSize);
if (dwStatus == ERROR_SUCCESS)
iMAC[1]=MAC;
dwStatus = RegQueryValueEx(hkMAC, _T("MAC56"), NULL, &dwType, (LPBYTE) &MAC, &dwSize);
if (dwStatus == ERROR_SUCCESS)
iMAC[2]=MAC;
int initCS()
CS8900WriteRegister(PKTPG_LINE_CTL, LINE_CTL_10_BASE_T);
CS8900WriteRegister(PKTPG_RX_CFG, RX_CFG_RX_OK_I_E);
CS8900WriteRegister(PKTPG_RX_CTL,RX_CTL_RX_OK_A | RX_CTL_IND_ADDR_A |RX_CTL_BROADCAST_A);
CS8900WriteRegister(PKTPG_TX_CFG, 0);
CS8900WriteRegister(PKTPG_BUF_CFG, 0);
ReadRegsister();
CS8900WriteRegister(PKTPG_INDIVISUAL_ADDR + 0, iMAC[0]);
CS8900WriteRegister(PKTPG_INDIVISUAL_ADDR + 2, iMAC[1]);
CS8900WriteRegister(PKTPG_INDIVISUAL_ADDR + 4, iMAC[2]);
initIrq();
return TRUE;
BOOLEAN CS8900ReadEthernetAddress(
IN PCS8900_ADAPTER Adapter
Adapter-&PermanentAddress[0] = iMAC[0]& 0x00FF;
Adapter-&PermanentAddress[1] = iMAC[0]&&8;
Adapter-&PermanentAddress[2] = iMAC[1]& 0x00FF;
Adapter-&PermanentAddress[3] = iMAC[1]&&8;
Adapter-&PermanentAddress[4] = iMAC[2]& 0x00FF;
Adapter-&PermanentAddress[5] = iMAC[2]&&8;
RETAILMSG(1,
(TEXT("CS8900: PermanentAddress [ %02x-%02x-%02x-%02x-%02x-%02x ]/r/n"),
Adapter-&PermanentAddress[0],
Adapter-&PermanentAddress[1],
Adapter-&PermanentAddress[2],
Adapter-&PermanentAddress[3],
Adapter-&PermanentAddress[4],
Adapter-&PermanentAddress[5]));
if ((Adapter-&StationAddress[0] == 0x00) &
(Adapter-&StationAddress[1] == 0x00) &
(Adapter-&StationAddress[2] == 0x00) &
(Adapter-&StationAddress[3] == 0x00) &
(Adapter-&StationAddress[4] == 0x00) &
(Adapter-&StationAddress[5] == 0x00)
RETAILMSG(1, (TEXT("CS8900: StationAddress Modified!.../r/n")));
Adapter-&StationAddress[0] = Adapter-&PermanentAddress[0];
Adapter-&StationAddress[1] = Adapter-&PermanentAddress[1];
Adapter-&StationAddress[2] = Adapter-&PermanentAddress[2];
Adapter-&StationAddress[3] = Adapter-&PermanentAddress[3];
Adapter-&StationAddress[4] = Adapter-&PermanentAddress[4];
Adapter-&StationAddress[5] = Adapter-&PermanentAddress[5];
return(TRUE);
編譯後就可以了,這樣就讓驅動是從註冊表中讀取MAC地址了。那麼接下來我們就有辦法修改這個MAC地址了。
3.寫修改註冊表
下面是關鍵代碼:
void CWINCEMACDlg::ReadRegsister()
HKEY hkMAC = NULL;
DWORD MAC=0;
DWORD dwStatus, dwType, dwS
TCHAR gszBaseInstance[256] = _T("//Comm//CS8900//Parms");
dwStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, gszBaseInstance, 0, KEY_ALL_ACCESS, &hkMAC);
dwType = REG_DWORD;
if(dwStatus == ERROR_SUCCESS && dwType == REG_DWORD)
dwSize = sizeof(DWORD);
dwStatus = RegQueryValueEx(hkMAC, _T("MAC12"), NULL, &dwType, (LPBYTE) &MAC, &dwSize);
if (dwStatus == ERROR_SUCCESS)
m_EDT0.Format(_T("%02x"),(MAC & 0x00ff));
m_EDT1.Format(_T("%02x"),(MAC && 8));
dwStatus = RegQueryValueEx(hkMAC, _T("MAC34"), NULL, &dwType, (LPBYTE) &MAC, &dwSize);
if (dwStatus == ERROR_SUCCESS)
m_EDT2.Format(_T("%02x"),(MAC & 0x00ff));
m_EDT3.Format(_T("%02x"),(MAC && 8));
dwStatus = RegQueryValueEx(hkMAC, _T("MAC56"), NULL, &dwType, (LPBYTE) &MAC, &dwSize);
if (dwStatus == ERROR_SUCCESS)
m_EDT4.Format(_T("%02x"),(MAC & 0x00ff));
m_EDT5.Format(_T("%02x"),(MAC && 8));
RegCloseKey( hkMAC );
UpdateData(FALSE);
void CWINCEMACDlg::WriteRegsister()
HKEY hkMAC = NULL;
DWORD dwStatus, dwS
TCHAR gszBaseInstance[256] = _T("//Comm//CS8900//Parms");
dwStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, gszBaseInstance, 0, KEY_ALL_ACCESS, &hkMAC);
if(dwStatus == ERROR_SUCCESS )
dwSize = sizeof(DWORD);
TCHAR num[4]={0};
BYTE * lpB
UpdateData(TRUE);
wsprintf(num,L"0x%s", m_EDT1.GetBuffer(0));
value += _ttoi(num)&&8;
wsprintf(num,L"0x%s", m_EDT0.GetBuffer(0));
value += _ttoi(num);
lpBuffer = (BYTE *)&
RegSetValueEx(hkMAC, _T("MAC12"), 0, REG_DWORD, lpBuffer,dwSize);
wsprintf(num,L"0x%s", m_EDT3.GetBuffer(0));
value += _ttoi(num)&&8;
wsprintf(num,L"0x%s", m_EDT2.GetBuffer(0));
value += _ttoi(num);
lpBuffer = (BYTE *)&
RegSetValueEx(hkMAC, _T("MAC34"), 0, REG_DWORD, lpBuffer,dwSize);
wsprintf(num,L"0x%s", m_EDT5.GetBuffer(0));
value += _ttoi(num)&&8;
wsprintf(num,L"0x%s", m_EDT4.GetBuffer(0));
value += _ttoi(num);
lpBuffer = (BYTE *)&
RegSetValueEx(hkMAC, _T("MAC56"), 0, REG_DWORD, lpBuffer,dwSize);
RegCloseKey( hkMAC );
4.如果有外接EEPROM之類的話,那麼一般是寫在EEPROM裡面的,而不是寫註冊表。如果這種實現方式必須採用Hive方式的註冊表。不然也是保存不了的。
5.特別說明MAC地址一般由12個16進制數字組成,每2個為一組,前面3組代表網絡硬件製造商的編號,這個一般是由IEEE來分配。後面3組代表該製造商所製造的某個網絡產品的序列號。這樣也就為什麼我們說MAC地址是唯一的了(當然前提是你沒有自己修改過)。wince驅動由於比較特殊,6組值要寫入3個IO裡面一個IO只能寫入16個字節,為了方便我就不按照正常定義為兩個部分,而是簡單定義成3個部分,這樣容易寫代碼。必須說明的是MAC地址前3組值不是能隨便更改的,我們一般就改動後3組就行了。非要改就要找一個製造商的編號才行。另外如果不修改MAC地址不組網是沒有問題的,但是如果組網就會有一些小問題,比如ping,wince之間無法相互ping。當然還有別的。
&&&&推薦文章:
【上篇】【下篇】查看: 4150|回复: 10
如何用VC修改MAC地址啊?
阅读权限40
中级会员, 积分 392, 距离下一级还需 108 积分
& && &&&这几天,天天有人用ARP工具限制我的网速,用什么ARP防火墙都没有效果,只能改MAC才可以继续上网,但是没次手工修改很慢的,20秒钟左右,有会断网,所以,希望大家帮忙想下,如何用VC修改MAC地址。
& && & 脚本的不是很喜欢,现在只要能换MAC地址,并且不用重启,就OK了,谢谢大家,谢谢syc!
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限100
本帖最后由 wulongxiang2009 于
17:08 编辑
用它吧,百试不爽,现改现用,改完自动重启网卡,这样也不是办法,建议你绑定网关
本帖子中包含更多资源
才可以下载或查看,没有帐号?
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限100
取得系统中网卡MAC地址的三种方法
第一种方法使用Microsoft的Netbios API。 这是一套通过Winsock提供底层网络支持的命令。使用Netbios
的最大缺点是您必须在系统中安装了Netbios服务(如果您在windows网络中启用了文件共享的话,这就不
是问题了)。除此此外,这种方法又快又准确。
Netbios API只包括了一个函数,就叫做Netbios。这个函数使用网络控制块(network control block)结构作
为参数,这个结构告诉函数要做什么。结构的定义如下:
&&typedef struct _NCB {
& & UCHAR&&ncb_
& & UCHAR&&ncb_
& & UCHAR&&ncb_
& & UCHAR&&ncb_
& & PUCHAR ncb_
& & WORD& &ncb_
& & UCHAR&&ncb_callname[NCBNAMSZ];
& & UCHAR&&ncb_name[NCBNAMSZ];
& & UCHAR&&ncb_
& & UCHAR&&ncb_
& & void (CALLBACK *ncb_post) (struct _NCB *);
& & UCHAR&&ncb_lana_
& & UCHAR&&ncb_cmd_
#ifdef _WIN64
& & UCHAR&&ncb_reserve[18];
& & UCHAR&&ncb_reserve[10];
& & HANDLE ncb_
} NCB, *PNCB;
重点在于ncb_command 成员。这个成员告诉Netbios该作什么。我们使用三个命令来探测MAC地址。他
们在MSDN的定义如下:
命令描述:
NCBENUM Windows NT/2000: 列举系统中网卡的数量。使用此命令后,ncb_buffer成员指向由
LANA_ENUM结构填充的缓冲区。
NCBENUM 不是标准的 NetBIOS 3.0 命令。
NCBRESET 重置网卡。网卡在接受新的NCB命令之前必须重置。
NCBASTAT 接受本地或远程接口卡的状态。使用此命令后,ncb_buffer成员指向由ADAPTER_STATUS
结构填充的缓冲区,随后是NAME_BUFFER结构的数组。
下面就是取得您系统MAC地址的步骤:
1》列举所有的接口卡。
2》重置每块卡以取得它的正确信息。
3》查询接口卡,取得MAC地址并生成标准的冒号分隔格式。
下面就是实例源程序。
netbios.cpp
#include &windows.h&
#include &stdlib.h&
#include &stdio.h&
#include &iostream&
#include &string&
#define bzero(thing,sz) memset(thing,0,sz)
bool GetAdapterInfo(int adapter_num, string &mac_addr)
{
&&// 重置网卡,以便我们可以查询
&&NCB N
&&memset(&Ncb, 0, sizeof(Ncb));
&&Ncb.ncb_command = NCBRESET;
&&Ncb.ncb_lana_num = adapter_
&&if (Netbios(&Ncb) != NRC_GOODRET) {
& & mac_addr = &bad (NCBRESET): &;
& & mac_addr += string(Ncb.ncb_retcode);
& &
&&}
&&// 准备取得接口卡的状态块
&&bzero(&Ncb,sizeof(Ncb);
&&Ncb.ncb_command = NCBASTAT;
&&Ncb.ncb_lana_num = adapter_
&&strcpy((char *) Ncb.ncb_callname, &*&);
&&struct ASTAT
&&{
& & ADAPTER_STATUS
& & NAME_BUFFER NameBuff[30];
&&} A
&&bzero(&Adapter,sizeof(Adapter));
&&Ncb.ncb_buffer = (unsigned char *)&A
&&Ncb.ncb_length = sizeof(Adapter);
&&// 取得网卡的信息,并且如果网卡正常工作的话,返回标准的冒号分隔格式。
&&if (Netbios(&Ncb) == 0)
&&{
& & char acMAC[18];
& & sprintf(acMAC, &%02X:%02X:%02X:%02X:%02X:%02X&,
& && && && &int (Adapter.adapt.adapter_address[0]),
& && && && &int (Adapter.adapt.adapter_address[1]),
& && && && &int (Adapter.adapt.adapter_address[2]),
& && && && &int (Adapter.adapt.adapter_address[3]),
& && && && &int (Adapter.adapt.adapter_address[4]),
& && && && &int (Adapter.adapt.adapter_address[5]));
& & mac_addr = acMAC;
& &
&&}
&&else
&&{
& & mac_addr = &bad (NCBASTAT): &;
& & mac_addr += string(Ncb.ncb_retcode);
& &
&&}
}
int main()
{
&&// 取得网卡列表
&&LANA_ENUM AdapterL
&&NCB N
&&memset(&Ncb, 0, sizeof(NCB));
&&Ncb.ncb_command = NCBENUM;
&&Ncb.ncb_buffer = (unsigned char *)&AdapterL
&&Ncb.ncb_length = sizeof(AdapterList);
&&Netbios(&Ncb);
&&// 取得本地以太网卡的地址
&&string mac_
&&for (int i = 0; i & AdapterList.length - 1; ++i)
&&{
& & if (GetAdapterInfo(AdapterList.lana[i], mac_addr))
& & {
& && &cout && &Adapter & && int (AdapterList.lana[i]) &&
& && && && &&&&'s MAC is & && mac_addr &&
& & }
& & else
& & {
& && &cerr && &Failed to get MAC address! Do you& &&
& && &cerr && &have the NetBIOS protocol installed?& &&
& && &
& & }
&&}
&&return 0;
}复制代码file://---------------------------------------------------------------------------
第二种方法-使用COM GUID API
这种方法使用COM API创建一个GUID(全局唯一标识符)并从那里继承MAC地址。GUID通常用来标识
COM组件以及系统中的其他对象。它们是由MAC地址(结合其他东西)计算得来的,表面上MAC地址就
包含在其中。我说表面上是因为事实上并没有包含。
我提供这种方法更多的是为了作为反面教材。您也许用这种方法能够得到MAC地址,但有时候您只会
得到随机的十六进制数值。
下面的例子十分简单,无需多讲。我们使用CoCreateGuid创建GUID,并将最后六个字节放入字符串中
。它们可能是MAC地址,但并不是必然的。
//uuid.cpp
#include &windows.h&
#include &iostream&
#include &conio.h&
int main()
{
& & cout && &MAC address is: &;
& & // 向COM要求一个UUID。如果机器中有以太网卡,
& & // UUID最后的六个字节(Data4的2-7字节)应该是本地以太网卡的MAC地址。
& & GUID
& & CoCreateGuid(&uuid);
& & // Spit the address out
& & char mac_addr[18];
& & sprintf(mac_addr,&%02X:%02X:%02X:%02X:%02X:%02X&,
& && && && &uuid.Data4[2],uuid.Data4[3],uuid.Data4[4],
& && && && &uuid.Data4[5],uuid.Data4[6],uuid.Data4[7]);
& & cout && mac_addr &&
& & getch();
& & return 0;
}复制代码第三种方法- 使用SNMP扩展API
我要讨论的第三种方法是使用Windows的SNMP(简单网络管理协议)扩展来取得MAC地址。在我的经验
里,这个协议很简单。代码也是直勾勾的向前的。基本步骤和Netbios相同:
1》取得网卡列表
2》查询每块卡的类型和MAC地址
3》保存当前网卡
我个人对SNMP了解不多,但如我刚刚所言,代码十分清楚。
//snmp.cpp
#include &snmp.h&
#include &conio.h&
#include &stdio.h&
typedef bool(WINAPI * pSnmpExtensionInit) (
& && &&&IN DWORD dwTimeZeroReference,
& && &&&OUT HANDLE * hPollForTrapEvent,
& && &&&OUT AsnObjectIdentifier * supportedView);
typedef bool(WINAPI * pSnmpExtensionTrap) (
& && &&&OUT AsnObjectIdentifier * enterprise,
& && &&&OUT AsnInteger * genericTrap,
& && &&&OUT AsnInteger * specificTrap,
& && &&&OUT AsnTimeticks * timeStamp,
& && &&&OUT RFC1157VarBindList * variableBindings);
typedef bool(WINAPI * pSnmpExtensionQuery) (
& && &&&IN BYTE requestType,
& && &&&IN OUT RFC1157VarBindList * variableBindings,
& && &&&OUT AsnInteger * errorStatus,
& && &&&OUT AsnInteger * errorIndex);
typedef bool(WINAPI * pSnmpExtensionInitEx) (
& && &&&OUT AsnObjectIdentifier * supportedView);
void main()
{
&&HINSTANCE m_hI
&&pSnmpExtensionInit m_I
&&pSnmpExtensionInitEx m_InitEx;
&&pSnmpExtensionQuery m_Q
&&pSnmpExtensionTrap m_T
&&HANDLE PollForTrapE
&&AsnObjectIdentifier SupportedV
&&UINT OID_ifEntryType[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 3};
&&UINT OID_ifEntryNum[] = {1, 3, 6, 1, 2, 1, 2, 1};
&&UINT OID_ipMACEntAddr[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 6};
&&AsnObjectIdentifier MIB_ifMACEntAddr =
& & { sizeof(OID_ipMACEntAddr)&&sizeof(UINT), OID_ipMACEntAddr };
&&AsnObjectIdentifier MIB_ifEntryType =
& & {sizeof(OID_ifEntryType)&&sizeof(UINT), OID_ifEntryType};
&&AsnObjectIdentifier MIB_ifEntryNum =
& & {sizeof(OID_ifEntryNum)&&sizeof(UINT), OID_ifEntryNum};
&&RFC1157VarBindList varBindL
&&RFC1157VarBind varBind[2];
&&AsnInteger errorS
&&AsnInteger errorI
&&AsnObjectIdentifier MIB_NULL = {0, 0};
&&
&&
&&int i = 0, j = 0;
&&bool found =
&&char TempEthernet[13];
&&m_Init = NULL;
&&m_InitEx = NULL;
&&m_Query = NULL;
&&m_Trap = NULL;
&&/* 载入SNMP DLL并取得实例句柄 */
&&m_hInst = LoadLibrary(&inetmib1.dll&);
&&if (m_hInst & (HINSTANCE) HINSTANCE_ERROR)
&&{
& & m_hInst = NULL;
& &
&&}
&&m_Init =
& & (pSnmpExtensionInit) GetProcAddress(m_hInst, &SnmpExtensionInit&);
&&m_InitEx =
& & (pSnmpExtensionInitEx) GetProcAddress(m_hInst,
& && && && && && && && && && && && && && &&SnmpExtensionInitEx&);
&&m_Query =
& & (pSnmpExtensionQuery) GetProcAddress(m_hInst,
& && && && && && && && && && && && && &&&&SnmpExtensionQuery&);
&&m_Trap =
& & (pSnmpExtensionTrap) GetProcAddress(m_hInst, &SnmpExtensionTrap&);
&&m_Init(GetTickCount(), &PollForTrapEvent, &SupportedView);
&&/* 初始化用来接收m_Query查询结果的变量列表 */
&&varBindList.list = varB
&&varBind[0].name = MIB_NULL;
&&varBind[1].name = MIB_NULL;
&&/* 在OID中拷贝并查找接口表中的入口数量 */
&&varBindList.len = 1;& && &&&/* Only retrieving one item */
&&SNMP_oidcpy(&varBind[0].name, &MIB_ifEntryNum);
&&ret =
& & m_Query(ASN_RFC1157_GETNEXTREQUEST, &varBindList, &errorStatus,
& && && && &&errorIndex);
&&printf(&# of adapters in this system : %in&,
& && & varBind[0].value.asnValue.number);
&&varBindList.len = 2;
&&/* 拷贝OID的ifType-接口类型 */
&&SNMP_oidcpy(&varBind[0].name, &MIB_ifEntryType);
&&/* 拷贝OID的ifPhysAddress-物理地址 */
&&SNMP_oidcpy(&varBind[1].name, &MIB_ifMACEntAddr);
& & /* 提交查询,结果将载入 varBindList。
& && & 可以预料这个循环调用的次数和系统中的接口卡数量相等 */
& & ret =
& && &m_Query(ASN_RFC1157_GETNEXTREQUEST, &varBindList, &errorStatus,
& && && && &&&&errorIndex);
& & if (!ret)
& && &ret = 1;
& & else
& && &&&/* 确认正确的返回类型 */
& && &ret =
& && && & SNMP_oidncmp(&varBind[0].name, &MIB_ifEntryType,
& && && && && && && &&&MIB_ifEntryType.idLength); if (!ret) {
& & j++;
& & dtmp = varBind[0].value.asnValue.
& & printf(&Interface #%i type : %in&, j, dtmp);
& & /* Type 6 describes ethernet interfaces */
& & if (dtmp == 6)
& & {
& && &/* 确认我们已经在此取得地址 */
& && &ret =
& && && & SNMP_oidncmp(&varBind[1].name, &MIB_ifMACEntAddr,
& && && && && && && &&&MIB_ifMACEntAddr.idLength);
& && &if ((!ret) && (varBind[1].value.asnValue.address.stream != NULL))
& && &{
& && &&&if((varBind[1].value.asnValue.address.stream[0] == 0x44)
& && && & && (varBind[1].value.asnValue.address.stream[1] == 0x45)
& && && & && (varBind[1].value.asnValue.address.stream[2] == 0x53)
& && && & && (varBind[1].value.asnValue.address.stream[3] == 0x54)
& && && & && (varBind[1].value.asnValue.address.stream[4] == 0x00))
& && &&&{
& && && & /* 忽略所有的拨号网络接口卡 */
& && && & printf(&Interface #%i is a DUN adaptern&, j);
& && && &
& && &&&}
& && &&&if ((varBind[1].value.asnValue.address.stream[0] == 0x00)
& && && && &&& (varBind[1].value.asnValue.address.stream[1] == 0x00)
& && && && &&& (varBind[1].value.asnValue.address.stream[2] == 0x00)
& && && && &&& (varBind[1].value.asnValue.address.stream[3] == 0x00)
& && && && &&& (varBind[1].value.asnValue.address.stream[4] == 0x00)
& && && && &&& (varBind[1].value.asnValue.address.stream[5] == 0x00))
& && &&&{
& && && & /* 忽略由其他的网络接口卡返回的NULL地址 */
& && && & printf(&Interface #%i is a NULL addressn&, j);
& && && &
& && &&&}
& && &&&sprintf(TempEthernet, &%02x%02x%02x%02x%02x%02x&,
& && && && && & varBind[1].value.asnValue.address.stream[0],
& && && && && & varBind[1].value.asnValue.address.stream[1],
& && && && && & varBind[1].value.asnValue.address.stream[2],
& && && && && & varBind[1].value.asnValue.address.stream[3],
& && && && && & varBind[1].value.asnValue.address.stream[4],
& && && && && & varBind[1].value.asnValue.address.stream[5]);
& && &&&printf(&MAC Address of interface #%i: %sn&, j,
& && && && && &TempEthernet);}
& && &}
& & }
&&} while (!ret);& && && &/* 发生错误终止。 */
&&getch();
&&FreeLibrary(m_hInst);
&&/* 解除绑定 */
&&SNMP_FreeVarBind(&varBind[0]);
&&SNMP_FreeVarBind(&varBind[1]);
}
复制代码
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限60
铜牌会员, 积分 1200, 距离下一级还需 300 积分
楼主还是静态绑定IP和MAC吧
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限100
本帖最后由 wulongxiang2009 于
17:40 编辑
给你个VC修改MAC的源代码,修改MAC地址小心为妙,强烈建议绑定网关
本帖子中包含更多资源
才可以下载或查看,没有帐号?
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限40
中级会员, 积分 392, 距离下一级还需 108 积分
非常感谢!但是我试过了 绑定路由器的网卡地址不是很有效果,还是很感谢!谢谢!
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限40
中级会员, 积分 392, 距离下一级还需 108 积分
感谢wulongxiang2009,感谢源码,感谢CCTV……
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限40
中级会员, 积分 392, 距离下一级还需 108 积分
不知道为什么,我的VC6编译失败,大哥给我做个简单的工具吧,运行exe后,就改变MAC,并禁用本地连接,然后在启用本地连接,这个就是傻瓜式的操作了,呵呵~~~~~
斗胆的在假设下,如果运行大哥编译的exe,能够监视我的网络连接,如果被限制了,就立即切换MAC,然后禁用本地连接,然后在启用本地连接,这样就是王道了!!
当然,大哥有时间就抽空为小弟想想,弹指间,烟灰一掉,代码就有了,呵呵,先谢过了!!!
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限100
上面工具给你了啊。MACmakeup
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限40
中级会员, 积分 392, 距离下一级还需 108 积分
额&&那个可以的& &
我想搞的傻瓜点
呵呵 还是谢谢了!
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
新手上路, 积分 26, 距离下一级还需 24 积分
我想下一个源码试试。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
站长提醒 /1
为了能给广大编程爱好者提供一个更好的学习交流平台,从即日起面向广大网友特举办《发原创得奖励》活动。Vip教程,驿站U盘,无线鼠标 免费送,礼品丰厚,赶快来参加吧!
VC驿站微信公众号cctry2009
Powered by Discuz! X3.3

我要回帖

更多关于 xmac.com 的文章

 

随机推荐