Baron Sengir
Mitglied
Hi,
ich greife auf WindowsRegistry mit folgendem Code zu:
Bei allerersten Durchlaufen des Programms funktioniert auch alles wunderbar. In die Registry werden die richtigen Werte gesetzt.
Beim zweiten Durchlaufen des Programms, liefern aller Variablen den richtigen Inhalt der Registry zurück bis auf HOST. HOST liefert 0. 0 ist aber der Wert von Player 2, der zuvor ausgelesen wird.
Was mache ich falsch?
In der Hoffnung auf Hilfe,
Markus
ich greife auf WindowsRegistry mit folgendem Code zu:
C++:
// Registry - Geschichten
unsigned char temp[99] = {""};
unsigned long size = sizeof(temp);
HKEY hKey;
CString tmp;
LPTSTR t;
long error;
int player1, player2;
CString HOST, USER, PASS;
t = NULL;
error = RegOpenKey(HKEY_CURRENT_USER, "Software\\TDJv3\\Player1", &hKey);
if (error == 0)
{ // Key für Player 1 existiert
RegQueryValueEx(hKey, "", NULL, NULL, temp, &size);
RegCloseKey(hKey);
tmp.Format("%s", temp);
player1 = StrToInt(tmp);
} else
{ // Key für Player 1 existiert nicht
RegCreateKey(HKEY_CURRENT_USER, "Software\\TDJv3", &hKey);
RegSetValue(hKey, "Player1", REG_SZ, "0", 0);
RegCloseKey(hKey);
}
error = RegOpenKey(HKEY_CURRENT_USER, "Software\\TDJv3\\Player2", &hKey);
if (error == 0)
{ // Key für Player 2 existiert
RegQueryValueEx(hKey, "", NULL, NULL, temp, &size);
RegCloseKey(hKey);
tmp.Format("%s", temp);
player2 = StrToInt(tmp);
} else
{ // Key für Player 2 existiert nicht
RegCreateKey(HKEY_CURRENT_USER, "Software\\TDJv3", &hKey);
RegSetValue(hKey, "Player2", REG_SZ, "0", 0);
RegCloseKey(hKey);
}
error = RegOpenKey(HKEY_CURRENT_USER, "Software\\TDJv3\\HOST", &hKey);
if (error == 0)
{ // Key für HOST existiert
RegQueryValueEx(hKey, "", NULL, NULL, temp, &size);
HOST.Format("%s", temp);
RegCloseKey(hKey);
} else
{ // Key für HOST existiert nicht
RegCreateKey(HKEY_CURRENT_USER, "Software\\TDJv3", &hKey);
RegSetValue(hKey, "HOST", REG_SZ, "localhost", 0);
RegCloseKey(hKey);
}
error = RegOpenKey(HKEY_CURRENT_USER, "Software\\TDJv3\\USER", &hKey);
if (error == 0)
{ // Key für USER existiert
RegQueryValueEx(hKey, "", NULL, NULL, temp, &size);
USER.Format("%s", temp);
RegCloseKey(hKey);
} else
{ // Key für USER existiert nicht
RegCreateKey(HKEY_CURRENT_USER, "Software\\TDJv3", &hKey);
RegSetValue(hKey, "USER", REG_SZ, "root", 0);
RegCloseKey(hKey);
}
error = RegOpenKey(HKEY_CURRENT_USER, "Software\\TDJv3\\PASS", &hKey);
if (error == 0)
{ // Key für PASS existiert
RegQueryValueEx(hKey, "", NULL, NULL, temp, &size);
PASS.Format("%s", temp);
RegCloseKey(hKey);
} else
{ // Key für PASS existiert nicht
RegCreateKey(HKEY_CURRENT_USER, "Software\\TDJv3", &hKey);
RegSetValue(hKey, "PASS", REG_SZ, "", 0);
RegCloseKey(hKey);
}
Bei allerersten Durchlaufen des Programms funktioniert auch alles wunderbar. In die Registry werden die richtigen Werte gesetzt.
Beim zweiten Durchlaufen des Programms, liefern aller Variablen den richtigen Inhalt der Registry zurück bis auf HOST. HOST liefert 0. 0 ist aber der Wert von Player 2, der zuvor ausgelesen wird.
Was mache ich falsch?
In der Hoffnung auf Hilfe,
Markus
Zuletzt bearbeitet: