Leggere valore da registro di sistema in C
|
- Subject: Leggere valore da registro di sistema in C
- From: Paolo Ferretti
- Data: Thu, 24 Jul 2008 09:11:06 -0700 (PDT)
- Newsgroups: it.comp.programmare.win32
Salve a tutti,
spero di aver scritto nel gruppo corretto. Ho un problema con la
lettura di un valore da registro di sistema tramite la funzione
RegQueryValueEx delle api win32 in C. Col codice che riporto sotto,
riesco ad ottenere il valore voluto, il problema è che il vettore di
char (rgValue) che mi viene restituito intervalla un carattere normale
a un carattere di fine stringa '\0'. Così mi viene impedita la
successiva elaborazione della stringa, in quanto logicamente si ferma
dopo il primo carattere. Ho scritto una funzione che elimina questi
caratteri, ma non mi pare una soluzione molto elegante. Forse con un
esempio mi spiego meglio: se il valore nel registro è "Paolo", mi
viene restituito
regValue[0] => 'P'
regValue[1] => '\0'
regValue[2] => 'a'
regValue[3] => '\0'
regValue[4] => 'o'
regValue[5] => '\0'
regValue[6] => 'l'
regValue[7] => '\0'
regValue[8] => 'o'
regValue[9] => '\0'
Ecco il codice, qualcuno sa dirmi dove sbaglio?
HKEY keyHandle;
char rgValue [1024] = {0};
LPCTSTR regPath = L"SYSTEM\\CurrentControlSet\\Control\\Session Manager
\\Environment";
LPCTSTR regReq = L"TEMP";
DWORD size1 = sizeof(rgValue);
DWORD Type;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, regPath,0, KEY_QUERY_VALUE,
&keyHandle) == ERROR_SUCCESS)
{
RegQueryValueEx( keyHandle, regReq, NULL, &Type,
(LPBYTE)rgValue,&size1);
}
RegCloseKey(keyHandle);
Grazie, Paolo