Registrywert auslesen

m4nueL

Mitglied
Ich hab versucht einen Wert aus einer MsgBox auslesen zu lassen aber ich krieg immer den text in der msgbox : ÌÌÌÌÌÌÌÌÌ und wenn ich memset hinzufüge krieg ich keinen text.

Bitte um Rat. Danke


void CreghackDlg::OnBnClickedOk()
{
LONG lResult;
HKEY hKey1;
char szVal[255];
// memset(szVal,0,255);
DWORD dwSize=255,dwType;

lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
LPCTSTR("HKEY_CURRENT_USER\\Console"),
0,KEY_QUERY_VALUE,&hKey1);

if (lResult != ERROR_SUCCESS)
{
cout << "Key not found: lResult=" << lResult << endl;
}

if(lResult==ERROR_SUCCESS)
{
// OK, read the value
lResult=RegQueryValueEx(hKey1,LPTSTR("FaceName"),NULL,
&dwType, LPBYTE(szVal),&dwSize);

cout << "Value=" << szVal << endl;
cout << "Size=" << dwSize << endl;

// Close the key before quitting
lResult=RegCloseKey(hKey1);
}
MessageBox(szVal,NULL,MB_OK);
}
 
Da hast du etwas falsch gemacht:
Code:
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
LPCTSTR("HKEY_CURRENT_USER\\Console"),
0,KEY_QUERY_VALUE,&hKey1);
Du versuchst unter dem Hauptkey HKEY_LOCAL_MACHINE einen Key Namens HKEY_CURRENT_USER\\Console zu öffnen.
Der existiert aber nicht, kann ja auch nicht.
Wenn du nämlich hKey1 im Debugger anschaust, dann kannst du feststellen, daß dein HKEY-Handle NULL ist, was soviel heißt, daß der Key nicht geöffnet werden konnte. Die Funktion gibt dir auch einen Fehler zurück und kein ERROR_SUCCESS.
Also solltest du auch auf den hKey1 abprüfen.

So wäre es richtig:
Code:
lResult = RegOpenKeyEx(HKEY_CURRENT_USER,
"Console",0,KEY_QUERY_VALUE,&hKey1);

Übrigens das LPCTSTR kannst du dir auch sparen, denn das ist nix anderes als ein const char * also ein null terminierter constanter String.

Gruss Homer
 
Zurück