M
ulli82 schrieb:
danke für die vielen antworten. ich habe gestern noch etwas herumexperementiert und habe es so hinbekommen:
RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)TEXT("KStat"), (strlen("KStat")*2));
Ist das jetzt zufallen, dass er "KStat" komplett reinschreibt oder wird es nicht funktionieren, wenn mal irgendein wort kommt wie "KStatGeneratorProgrammWeissIchWas"? kann mir meine logik mit dem strlen()*2 nicht ganz erklären :p
Unicode-Zeichen sind ja 16 bit breit und dein Stringliteral, das du strlen übergibst, ist ein 8Bit-String. Die Tatsache, dass es ohne Einbeziehung der Nullterminierung funktioniert ist wohl eher zufällig, laut MSDN erwartet diese Funktion jedenfalls einen nullterminierten Buffer.
strlen(TEXT("KStat")) würde unter Unicode jedenfalls nicht funktionieren.
Mach es einfach so, wie es Flenders geschrieben hat, das kompiliert dann mit und ohne Unicode. Es ist außerdem unschön, die Stringliterale mehrfach direkt in die Funktionsaufrufe zu schreiben.