一.VS2005自带打包工具使用
http://hi.baidu.com/63club/item/20b24b11ef7acfe15f53b1f7
二.图标制作软件
IconWorkShop
三.写注册表
RegOpenKeyEx返回 2及原因 : http://www.cnblogs.com/ziwuge/archive/2012/03/19/2407163.html
注册表操作函数RegOpenKeyEx在win7 64下返回的值不正确: http://www.myexception.cn/h/1150394.html
我的环境使用unicode字符集:需要这样写:
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), //宽字符
0, KEY_WRITE, &hKey) !=ERROR_SUCCESS){
return -1;
}
RegSetValueEx 写注册表乱码错误解决方法:
wchar_t szValue[512];
mbstowcs(szValue, pval, sizeof(pval));
if(RegSetValueEx(hKey, _T("BrdService"), 0, REG_SZ, (CONST BYTE *)szValue, strlen(pval)+1) //szValue参数必须是宽字符存储字符串
!=ERROR_SUCCESS){ //而调用RegSetValueEx函数的程序,必须以管理员身份运行。
printf("Set Register Value Failed<%d>!\n", errno);
RegCloseKey(hKey);
return -1;
}
总结:VS中 带 "Ex" 的函数使用unicode字符集,字符串参数必须是宽字节存储的。原来单字节存储的字符串不能强制转换为宽字符,需要使用函数:
mbstowcs和wcstombs函数相互转换。
如上RegSetValueEx函数中第5个参数即使是(const BYTE *)类型,也是宽字符存储空间的地址。
........持续更新中.........