wince 注册表中修改MAC地址
来源:互联网 发布:mac dock透明 编辑:程序博客网 时间:2024/05/16 14:17
WINCE注册表中修改MAC地址
我遇到的问题是读出注册表中的MAC地址(如:00037f8ec46f),显示在界面上(如:
00:03:7f:8e:c4:6f);修改注册表,给用户提供个输入窗口(假如用户输入:00:03:7f:8e:c4:7c);
我第一步读取注册表:
nt i,j,p;
CString mac_jie;
CString str_tmp;
char mac[6][6]={0};
char mac_str[30];
UINT mac_adderr =30;
if(S_OK!=RegistryGetString(HKEY_LOCAL_MACHINE,
TEXT("Comm\\AR6K_SD1\\Parms"),
TEXT("NetworkAddress"),
(LPTSTR)mac_str , mac_adderr))
{
m_now_mac.SetWindowText(L" 获取MAC地址失败! ");
}
读出来我就纳闷了,是个多字节字符串,怎么搞都搞不定,最后想了个不专业的方法(我不是做界面的对VC++了解不多),如你有跟好的方法,请指点(邮箱1124427436@qq.com);
p=0;
for(i=0;i<6; i++)
{
for(j=0; j<4; j++)
{
mac[i][j]=mac_str[p];
p++;
}
}
for(i=0;i<6;i++)
{
if(i==5)
str_tmp.Format(L"%s",mac[i]);
else
str_tmp.Format(L"%s:",mac[i]);
mac_jie += str_tmp;
}
m_now_mac.SetWindowText(mac_jie);
我的办法是把这个很长的字符分成6份,没份4个字节,然后每份转化成宽字符,这样就可以在其后加入宽字符的 L”:” 了,我就这么搞定了,
到用户那去取又遇到了同样的问题:
Cxyh_wifiMAC_setDlg *p = (Cxyh_wifiMAC_setDlg *)lpParm;
CString mac_jie;
int i,j,p1;
//char mac[30]={0};
char str_buf[50]={0};
p->m_genggai_mac.GetWindowText(mac_jie);
memcpy(str_buf,mac_jie,2*mac_jie.GetLength());
//mac_jie.Format(L"%s",str_buf);
//p->m_now_mac.SetWindowText(mac_jie);
CString mac_temp[25]={0};
char temp[25][4]={0};
CString mac;
p1=0;
for(i=0; i<25;i++)
{
for(j=0; j<2 ;j++)
{
temp[i][j]=str_buf[p1++];
}
}
for(i=0; i<25; i++)
{
mac_temp[i].Format(L"%s",temp[i]);
}
p1=0;
for(i=0; i<25; i++)
{
if(mac_temp[i]==L"\0")
break;
if(p1==2)
{
if(mac_temp[i]!=L":")
{
p->MessageBox(L"输入不符合规范!");
kk=0;
return 0;
}
p1=0;
}
else
{
p1++;
if(mac_temp[i]>=L"0" && mac_temp[i]<=L"9")
{
mac+=mac_temp[i];
continue;
}
else if(mac_temp[i]>=L"A" && mac_temp[i]<=L"F")
{
mac+=mac_temp[i];
continue;
}
else if(mac_temp[i]>=L"a" && mac_temp[i]<=L"f")
{
mac+=mac_temp[i];
continue;
}
else
{
p->MessageBox(L"输入不符合规范!");
kk=0;
return 0;
}
}
}
if(mac.GetLength()!=12)
{
p->MessageBox(L"输入不符合规范!");
kk=0;
return 0;
}
//p->m_now_mac.SetWindowText(mac);
if(S_OK != RegistrySetString(HKEY_LOCAL_MACHINE, TEXT("Comm\\AR6K_SD1\\Parms"),TEXT("NetworkAddress"),mac))
{
p->MessageBox(L"修改MAC地址失败!");
kk = 0;
}
//从新启wifi动模块,这一步可要可不要
p->m_now_mac.SetWindowText(L"Please waitting ....");
Sleep(1000);
int res;
res = restartwifi();
if(!res)
{
p->MessageBox(L"重启wifi模块失败!");
kk=0;
return -1;
}
//重新获取MAC地址
char mac_str[30];
CString mac_jie1;
CString str_tmp;
char mac_new[6][6]={0};
//char mac_str2[30];
UINT mac_adderr =30;
if(S_OK!=RegistryGetString(HKEY_LOCAL_MACHINE, TEXT("Comm\\AR6K_SD1\\Parms"),TEXT("NetworkAddress"),(LPTSTR)mac_str , mac_adderr))
{
p->m_now_mac.SetWindowText(L" 获取MAC地址失败! ");
}
p1=0;
for(i=0;i<6; i++)
{
for(j=0; j<4; j++)
{
mac_new[i][j]=mac_str[p1];
p1++;
}
}
for(i=0;i<6;i++)
{
if(i==5)
str_tmp.Format(L"%s",mac_new[i]);
else
str_tmp.Format(L"%s:",mac_new[i]);
mac_jie1 += str_tmp;
}
p->m_now_mac.SetWindowText(mac_jie1);
kk =0;
p->MessageBox(L"MAC修改成功,请从新启动设备!");
后面的前面的解决方案一样。
- wince 注册表中修改MAC地址
- 注册表修改MAC地址方法
- 通过注册表修改MAC地址
- 解决:注册表修改MAC 地址
- 通过注册表修改mac地址
- 如何在注册表中修改MAC地址[转]
- 注册表修改Windows网卡MAC地址
- 注册表修改MAC地址实现物理地址欺骗
- 如何修改wince(s3c2410)的MAC地址?
- 如何修改wince(s3c2410)的MAC地址?
- 如何修改wince(s3c2410)的MAC地址?
- 如何修改wince(s3c2410)的MAC地址
- 如何修改wince(s3c2410)的MAC地址?
- WINCE 注册表修改
- 修改IP和注册表Mac地址的方法
- 【S3C2410/WinCE】极度郁闷!cs8900的MAC地址无从修改。。。。
- 如何修改wince(s3c2410)的MAC地址 转+撰
- C# WinCE开发中获取MAC与IP地址
- Oracle DB 移动数据
- 1-9 实验7 网络通信实验1 广播和单播通信
- 终于解决了MDK 3.80a中不能使用printf()函数的问题
- Tomcat源码分析 启动流程分析
- 数字格式化-----将数字格式化制定位数
- wince 注册表中修改MAC地址
- C++动态数组delete出错,求助
- 为什么IT界比较累
- 上坡起步
- AsyncTask实现的原理和适用的优缺点
- linux命令解析--cut
- IOS面试题(英文)
- OutLook中服务器端显示邮件未读的问题
- 赫夫曼树和赫夫曼编码