Registry Functions not working as expected
Code:
if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, pathToKey, 0, KEY_ALL_ACCESS, &hAppKey) == ERROR_SUCCESS){
DWORD dwType = REG_SZ;
DWORD buffSize = 255;
DWORD dwTypeDW = REG_DWORD;
DWORD buffSizeDW = sizeof(DWORD);
//MessageBox(NULL, "Setting Listview Item", szTitle, MB_ICONINFORMATION | MB_OK);
if (RegQueryValueEx(hAppKey, "mask", 0, &dwTypeDW, (BYTE *) &rgFileInfo[item].masked, &buffSizeDW) != ERROR_SUCCESS){
MessageBox(NULL, pathToKey, "Unable to open value", MB_OK);
}
if (rgFileInfo[item].masked){
break;
}
if (RegQueryValueEx(hAppKey, "name", 0, &dwType, (BYTE *) rgFileInfo[item].szName, &buffSize) != ERROR_SUCCESS){
MessageBox(NULL, pathToKey, "Unable to open value", MB_OK);
}
if (strcmp(rgFileInfo[item].szRegName, "VUC") == 0){
int isError = 0;
if (majorVersion != rgFileInfo[item].majorVersion){
rgFileInfo[item].majorVersion = majorVersion;
if (RegSetValueEx(hAppKey, "major", 0, dwTypeDW, (BYTE *) majorVersion, buffSizeDW) != ERROR_SUCCESS){
isError = 1;
}
}
if (minorVersion != rgFileInfo[item].minorVersion){
rgFileInfo[item].minorVersion = minorVersion;
if (RegSetValueEx(hAppKey, "minor", 0, dwTypeDW, (BYTE *) minorVersion, buffSizeDW) != ERROR_SUCCESS){
isError = 1;
}
}
if (releaseVersion != rgFileInfo[item].releaseVersion){
rgFileInfo[item].releaseVersion = releaseVersion;
if (RegSetValueEx(hAppKey, "release", 0, dwTypeDW, (BYTE *) releaseVersion, buffSizeDW) != ERROR_SUCCESS){
isError = 1;
}
}
if (buildVersion != rgFileInfo[item].buildVersion){
rgFileInfo[item].buildVersion = buildVersion;
if (RegSetValueEx(hAppKey, "build", 0, dwTypeDW, (BYTE *) buildVersion, buffSizeDW) != ERROR_SUCCESS){
DisplayError("RegSetValueEx", __LINE__);
isError = 1;
}
}
_snprintf(rgFileInfo[item].szVer, sizeof(rgFileInfo[item].szVer) - 1, "%d.%d.%d", majorVersion, minorVersion, releaseVersion);
if (isError){
MessageBox(NULL, "Unable to set new versioning information", szTitle, MB_OK | MB_ICONERROR);
}
}else{
RegQueryValueEx(hAppKey, "version", 0, &dwType, (BYTE *) rgFileInfo[item].szVer, &buffSize);
}
I get:
Quote:
---------------------------
Vectec Update Client (VUC)
---------------------------
RegSetValueEx (Release) failed with error 6 on line 321:
The handle is invalid.
---------------------------
OK
---------------------------
Re: Registry Functions not working as expected
What happens when you step through the code in a debugger? Which line is line 321?
Arjay
Re: Registry Functions not working as expected
Line 321 is "RegSetValueEx(hAppKey, "release", 0, dwTypeDW, (BYTE *) releaseVersion, buffSizeDW) != ERROR_SUCCESS"
That one.
However, I'm not sure what to look for in the debugger.
Re: Registry Functions not working as expected
Set a brake point on line 321 and inspect the variables to make sure they are all valid. Also, check the value of GetLastError() to find out more error info.
Arjay