VC修改MAC地址

15 篇文章 0 订阅
10 篇文章 0 订阅
(1)第一步寻找适配器MAC所在的注册表位置
     在注册表"SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}"目录下遍历寻找
你要修改的哪个网卡的名称(在设备管理器>网络适配器中有网卡名称的列表),
     比如实验机网卡名称:Realtek PCIe GBE Family Controller,这个值保存在对应网卡的注册表项的DriverDesc键值中,则同注册表项
中的NetworkAddress值就是我们要找并修改的MAC值。
(2)重启网卡也采用命令行方式: 
    netsh interface set interface "连接名称" DISABLE  //使网卡失效
    netsh interface set interface "连接名称" ENABLE   //启动网卡 
(3)用命令行方式修改
    system("命令");但这种方式执行指令的时候会弹出console窗口
    采用ShellExcuteEx,可以创建一个新的进程去执行修改命令,并且在程序中适用WaitForSingleObject等待进程结束。
    如果直接在按钮按下响应消息中执行命令,命令执行期间窗口将假死(因为消息循环因命令执行而阻塞);通过创建新的线程去进行修改操作,并在线程执行结束后,发送一个自定义消息WM_MSG_MODIFY_COMPLETE(表示命令执行结束)。   
    //启动cmd执行 netsh命令,并等待命令结束


void CIpChangeDlg::ExcuteCommand(char* pCommandParam)


{


//初始化shellexe信息


SHELLEXECUTEINFO   ExeInfo; 


ZeroMemory(&ExeInfo, sizeof(SHELLEXECUTEINFO)); 


ExeInfo.cbSize = sizeof(SHELLEXECUTEINFO); 


ExeInfo.lpFile = "cmd.exe"; 


ExeInfo.lpParameters = pCommandParam;


ExeInfo.fMask = SEE_MASK_NOCLOSEPROCESS; 


ExeInfo.nShow = SW_HIDE; 


ExeInfo.hwnd = NULL;


ExeInfo.lpVerb = NULL;


ExeInfo.lpDirectory = NULL;


ExeInfo.hInstApp = NULL;






//执行命令


ShellExecuteEx(&ExeInfo);






//等待进程结束


WaitForSingleObject(ExeInfo.hProcess, INFINITE);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值