Registry Parameters Werte

lernen.2007

Erfahrenes Mitglied
Hallo Leute, ich habe so was:

bool RegistryLesen()
{
HKEY hk;
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, "System\\ControlSet001\\Services\\Testen\\Parameters",
NULL,KEY_QUERY_VALUE, &hk))

{ cout<<"Key open"<<endl;
return true;
}

char lpString[256]=" ";
DWORD dwData = 256;
BYTE cDaten[256] = " ";


if(ERROR_SUCCESS == RegQueryValueEx(hk,"Application",0,0,cDaten,&dwData))
{

cout<<"Key gelesen"<<endl;
return true;
}

if(ERROR_SUCCESS == RegCloseKey(hk))
{
cout<<"Key geschlossen"<<endl;
return true;
}


return true;
}

Ich will ein RG_SZ lesen. Aber mit diesem Code geht irgendwie nicht.Warum?

Danke
 
moin


Was geht denn nicht?
Was gibt er aus?
Wo bricht er ab?
Warum einmal BYTE und einmal char?
Ist der Eintrag auch ganz sicher, unter dem angegeben Pfad, vorhanden?


mfg
umbrasaxum
 
Hallo,

deine if-Abfragen kapiere ich nicht: Wenn was geklappt hast, geht du mit "return true;" aus der Funktion heraus, ohne weiterzumachen?

Bitte die die Code-Tags benutzen!

Gruß
MCoder
 
Ich habe es hinbekommen.Danke
bool RegistryLesen()
{
HKEY m_hkey;
char value[MAX_PATH];
DWORD dwType = REG_SZ;
DWORD dwSize = MAX_PATH;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\Services\\Testen\\Parameters",0,KEY_READ,&m_hkey)==ERROR_SUCCESS)
cout<<"SUBKEY is open"<<endl;


int i=0;
int iLastError=0;
do
{
char cValueName[256] = "";
DWORD dwValueName = 256;
DWORD ValueType = 0;
BYTE cValueData[256] = "\0";
DWORD dwValueData = 256;
iLastError = RegEnumValue(m_hkey,i,cValueName,&dwValueName,0,&ValueType,cValueData,&dwValueData);

if(ValueType == REG_SZ)
cout<<cValueName<<endl;
++i;
}while(iLastError!=ERROR_NO_MORE_ITEMS);

/*
if (RegQueryValueEx(m_hkey, "Wert", 0, &dwType,(LPBYTE)value,&dwSize)== ERROR_SUCCESS)
cout<<value<<endl;
*/


if(RegCloseKey(m_hkey) == ERROR_SUCCESS)
return true;
return false;
}
 
Zurück