Ho la maggior parte del codice per scrivere un valore nel registro di Windows, tuttavia quando cambio il percorso di una chiave fittizia e il valore che ho impostato per test fallisce. Il mio codice è qui sotto:Scrivere valori stringa (REG_SZ) nel registro in C++
HKEY hKey;
LPCTSTR sk = TEXT("SOFTWARE\TestSoftware");
LONG openRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sk, 0, KEY_ALL_ACCESS , &hKey);
if (openRes==ERROR_SUCCESS) {
printf("Success opening key.");
} else {
printf("Error opening key.");
}
LPCTSTR value = TEXT("TestSoftwareKey");
LPCTSTR data = "TestData\0";
LONG setRes = RegSetValueEx (hKey, value, 0, REG_SZ, (LPBYTE)data, strlen(data)+1);
if (setRes == ERROR_SUCCESS) {
printf("Success writing to Registry.");
} else {
printf("Error writing to Registry.");
}
LONG closeOut = RegCloseKey(hKey);
if (closeOut == ERROR_SUCCESS) {
printf("Success closing key.");
} else {
printf("Error closing key.");
}
Tutti e tre i test restituiscono stati di errore.
La parte che mi confonde è che ero in grado di eseguire questo codice quando lo si punta su altre porzioni del registro. Qualche idea?
grazie, brian
Si noti che la funzione 'RegSetValueEx' prende la lunghezza della stringa in byte (non caratteri) come ultimo argomento. Pertanto, è meglio usare 'StringCbLength' invece di' strlen'. –