实现:VS2008(VC9)。还是直接上代码吧,相信都可以看得懂。
1
void CMACchangerDlg::OnBnClickedButton1()2
{3
HKEY hKey;4
LPCTSTR lpKeyPath = TEXT("SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\0009"); //每个电脑各不相同,实际应用时记得修改。5
LPCTSTR pszOrigMac = TEXT("0019B95AD6D1"); //原始MAC地址6
LPCTSTR pszNewMac = TEXT("002036525621"); //修改的MAC地址7
SECURITY_ATTRIBUTES sa;8
sa.nLength = sizeof(sa);9
sa.lpSecurityDescriptor = NULL;10
sa.bInheritHandle = TRUE;11

12
long lOpenReturn = RegCreateKeyEx(HKEY_LOCAL_MACHINE,13
lpKeyPath,14
0, NULL,15
REG_OPTION_NON_VOLATILE,16
KEY_ALL_ACCESS,17
&sa, &hKey, NULL);18
if ( lOpenReturn != ERROR_SUCCESS)19
{20
MessageBox(TEXT("打开注册表失败,请以管理员身份运行!"), TEXT("错误"), MB_ICONWARNING);21
RegCloseKey(hKey);22
return;23
}24

25
if(MessageBox(TEXT("是否开始mac地址欺骗?"), TEXT("提示"), MB_ICONINFORMATION | MB_OKCANCEL) == IDOK)26
{27
if(RegSetValueEx(hKey, TEXT("NetworkAddress"), NULL, REG_SZ, (LPBYTE)pszNewMac, (DWORD) (lstrlen(pszNewMac)+1)*sizeof(TCHAR)))28
{29
RegCloseKey(hKey);30
MessageBox(TEXT("无法修改注册表"), TEXT("错误"), MB_ICONWARNING);31
return;32
}33
MessageBox(TEXT("修改MAC地址成功"), TEXT("提示"), MB_ICONINFORMATION);34
}else{35
if(RegSetValueEx(hKey, TEXT("NetworkAddress"), NULL, REG_SZ, (LPBYTE)pszOrigMac, (DWORD) (lstrlen(pszOrigMac)+1)*sizeof(TCHAR)))36
{37
RegCloseKey(hKey);38
MessageBox(TEXT("无法修改注册表"), TEXT("错误"), MB_ICONWARNING);39
return;40
}41
MessageBox(TEXT("已还原MAC地址"), TEXT("提示"), MB_ICONINFORMATION);42
}43
44
RegCloseKey(hKey);45
}
运行时因为权限问题必须使用admin权限。如果不够智能,可以利用DDK添加自动重启本地连接的功能。
来源:https://www.cnblogs.com/renzhacheng/archive/2009/07/04/1516732.html

