Simples Problem wahrscheinlich. Unicode Problem.
-
Hi!
HKEY hKey; RegCreateKeyEx(HKEY_LOCAL_MACHINE,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0); CString target = GetProgramFolder()+_T("test.exe"); RegSetValueEx(hKey,_T("Test"),0,REG_SZ,target.GetBuffer(target.GetLength()),target.GetLength()+1); RegCloseKey(hKey);schmeisst beim RegSetValueEx Aufruf einen Fehler beim kompilieren, da das Programm auf UNICODE kompiliert wird und der CString.GetBuffer() an der Stelle ein short Array wirft.
Leider passt das nicht in den Aufruf von RegSetValueExW(...), da dieser an der fünften Stelle unbedingt einen char* braucht.
Meine Frage: Wozu dann erst die ...W()-Funktion und wie bekomme ich das hin?
Ich habe nur den CString mit Widechars. Aber es sind auch keinerlei echte UNICODE Zeichen enthalten.Ich müsste das also irgendwie konvertieren. Geht das einfach so? Informationsverlust wäre dabei kein Problem. Ich will nur kein short, sondern char.
Gruß
Marcel
-
Es sieht so aus, als wenn die entsprechende ...W() Funktion alleine konvertiert.
ein (LPBYTE)-Cast und die entprechende sizeof(TCHAR) Umrechnung bei length lässt es fehlerfrei laufen.ich hoffe das ist kein zufall
