String in die Registry schreiben
-
Hallo zusammen,
ich möchte einen String in die Registry schreiben. Leider klappt das nicht.
Ich vermute das liegt daran das ich ein char Array an die Funktion RegSetValueEx übergebe, diese aber einen Unicode string schreibt.Wie muss ich das Array übergeben?
Es soll "hallo" in die Registry geschrieben werden. Es steht aber nach ausführen des Programms nur "??o" drin.
hier ist der Code
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. HKEY hkMyKey; DWORD dwDisposition; unsigned char string[]="hallo"; if (ERROR_SUCCESS!=RegCreateKeyEx( HKEY_USERS, TEXT("TEST"), 0, NULL, REG_OPTION_NON_VOLATILE, 0, NULL, &hkMyKey, &dwDisposition )) printf("Fehler beim Erzeugen des KEYS"); if (ERROR_SUCCESS!=RegSetValueEx( hkMyKey, TEXT("String"), 0, REG_SZ, string, (sizeof(string)) )) printf("Fehler beim schreiben"); if (ERROR_SUCCESS!=RegCloseKey( hkMyKey)) printf("Fehler beim schließen"); return 0; }Gruß
spacehelix
-
RegSetValueEx erwartet einen (const) byte pointer, daher musst du den char pointer casten:
reinterpret_cast<byte*>(string)// edit
Sehe grade, dass du schon ein byte array hast, daher dürfte es eigentlich keine Probleme bereiten, wenn du kein Unicode aktiviert hast.
Andernfalls hilft folgender code:TCHAR string[]=TEXT("hallo"); // <-- TCHAR anstatt unsigned char if (ERROR_SUCCESS!=RegCreateKeyEx( HKEY_CURRENT_USER, TEXT("TEST"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkMyKey, &dwDisposition )) printf("Fehler beim Erzeugen des KEYS"); if (ERROR_SUCCESS!=RegSetValueEx( hkMyKey, TEXT("String"), 0, REG_SZ, reinterpret_cast<byte*>(string), // <-- cast (sizeof(string)) ))
-
qasdfgh schrieb:
RegSetValueEx erwartet einen (const) byte pointer, daher musst du den char pointer casten:
reinterpret_cast<byte*>(string)Das ist nicht korrekt. Das hat mit const nichts zu tun.
In jedem Fall muss der char * erst einmal in enen UNICODE String umgewandelt werden, oder man verwendet direkt RegSetValueExA!
-
danke für eure hilfe,
ich habs damit geschafft.
Gruß
spacehelix