实现: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
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
运行时因为权限问题必须使用admin权限。如果不够智能,可以利用DDK添加自动重启本地连接的功能。