【急救】写注册表问题,字符串参数以0开头时……
char* szValue = “000162cdaf30”;
int res = RegSetValueEx(hKEY,"NetworkAddress",0,REG_SZ,(const unsigned char *)szValue,strlen(szValue));
上面的代码在release下写入注册表的数据不正确,是乱码。我理解是因为我的szValue中存在0,所以在RegSetValueEx处理时把szValue截断了,结果写出来是乱码。如果我把szValue=“111。。。”就能写正确了。
请问该然后解决?
问题点数:80、回复次数:7Top
1 楼Atomictry(天影)回复于 2006-03-17 11:27:05 得分 20
char* szValue = “000162cdaf30”;
这个并不会截断,'\0'才会。Top
2 楼DrSmart(斯玛特)回复于 2006-03-17 11:58:35 得分 10
晕,0不会截呀,char型没有\0不可能截断,你的参数有问题BYTE*Top
3 楼striking(庸人自扰)回复于 2006-03-17 12:07:07 得分 10
那是相当的奇怪~~Top
4 楼jinxuliang(smielfox)回复于 2006-03-17 18:47:59 得分 20
//测试后没有问题啊vc6+sp5+win2003 测试
HKEY hKey;
int r= RegOpenKeyEx( HKEY_LOCAL_MACHINE, "HARDWARE",0, KEY_WRITE, &hKey );
ASSERT(r==ERROR_SUCCESS);
char * szValue = "000162cdaf30";
int res = RegSetValueEx(hKey,"NetworkAddress",0,REG_SZ,(const unsigned char *)szValue,strlen(szValue)+1);//strlen(szValue)+1等价strlen(szValue)
ASSERT(res==ERROR_SUCCESS);
//
vc6+sp5+win2003 测试
Top
5 楼jinxuliang(smielfox)回复于 2006-03-17 18:51:34 得分 10
大哥
拜托别逗大家玩哈Top
6 楼DrSmart(斯玛特)回复于 2006-03-17 18:55:17 得分 10
char temp[]="DrSmart"; //value
HKEY key;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,"Software",0, KEY_ALL_ACCESS, &key );
RegSetValueEx(key,"DrSmart Software",0,REG_SZ,(BYTE*)temp, sizeof(temp)); // name
RegCloseKey(key);Top
7 楼pengjd(悲酥清风之冰霜之刃)回复于 2006-03-18 09:47:57 得分 0
找到问题了,不是这里的问题,谢谢大家啦Top




