写注册表乱码问题
为什么写进去的是乱码:
当读取Version时又是真确的,但读取path却是错误的指针
求各位大虾指点
HKEY hAppKey;
DWORD dwDisposition = MAX_PATH*sizeof(TCHAR);
LPCTSTR lpcKey = _T("SOFTWARE\\00TEST");
LPCTSTR lpcKeyVesrsion = _T("version");
LPCTSTR lpcKeyPath = _T("path");
LPBYTE lpbDataPath;
LPBYTE lpbDataVersion;
int nVersionLen;
int nPathLen;
UINT nErrorCode;
CString Version = _T("0.0.0.1");
nVersionLen = Version.GetLength();
lpbDataVersion = new BYTE[nVersionLen+1];
for(int i=0; i<nVersionLen; i++) {
lpbDataVersion[i] = Version[i];
}
lpbDataVersion[nVersionLen] = '\0';
CString Path = _T("C:\\Program Files\\test");
nPathLen = Path.GetLength();
lpbDataPath = new BYTE[nPathLen+1];
for(int i=0; i<nPathLen; i++) {
lpbDataPath[i] = Path[i];
}
lpbDataPath[nPathLen] = '\0';
if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, lpcKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL,&hAppKey, &dwDisposition)) {
TRACE("RegCreateKeyEx failed!\n");
return false;
}
else {
if (ERROR_SUCCESS != RegSetValueEx (hAppKey, lpcKeyVesrsion, 0, REG_SZ, lpbDataVersion, nVersionLen+1)) {
TRACE("RegSetValueEx Version failed!\n");
return false;
}
if (ERROR_SUCCESS != RegSetValueEx (hAppKey, lpcKeyPath, 0, REG_SZ, lpbDataPath, nPathLen+1)) {
TRACE("RegSetValueEx Path failed!\n");
return false;
}
RegCloseKey (hAppKey);
}
return true;
[解决办法]
TCHAR* lpbDataPath;
TCHAR* lpbDataVersion;
if (ERROR_SUCCESS != RegSetValueEx (hAppKey, lpcKeyVesrsion, 0, REG_SZ, (LPBYTE)lpbDataVersion, nVersionLen+1)) {
TRACE("RegSetValueEx Version failed!\n");
return false;
}
if (ERROR_SUCCESS != RegSetValueEx (hAppKey, lpcKeyPath, 0, REG_SZ, (LPBYTE)lpbDataPath, nPathLen+1)) {
TRACE("RegSetValueEx Path failed!\n");
return false;
}