none
Al escribir en registro el texto cambia a Chino RRS feed

  • Pregunta

  • Buenas tardes,

    Estoy estudiando C++ y probando códigos me he encontrado con algo extraño que no puedo comprender.

    Compilo lo siguiente:

    #include <Windows.h>
    
    
    int main() {
    
    	HKEY hKey;
    	RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hKey);
    	RegSetValueEx(hKey, TEXT("testing"), 0, REG_SZ, (BYTE*)"testing", strlen("testing"));
    	RegCloseKey(hKey);
    
    }

    Lo ejecuto y el resultado que veo en el registro es:

    No entiendo por que en vez de testing inserta caracteres que parecen en chino.

    ¿Alguien sabe que diablos es esto?

    Saludos.


    • Editado ErikNeller jueves, 9 de marzo de 2017 21:01
    jueves, 9 de marzo de 2017 21:01

Respuestas

  • Seguramente es porque estas compilando con UNICODE, pero estas pasando un std::string, que es ANSI. El sistema llama a RegSetValueExW, que interpreta tus caracteres ANSI como UNICODE, y por eso se ve "basura".

    Prueba a meter la cadena en un std::wstring:

    std::wstring test = TEXT("testing");
    ...
    RegSetValueEx(hKey, TEXT("testing"), 0, REG_SZ, (const BYTE*)test.c_str(), (test.size()+1)*sizeof(wchar_t));

    • Marcado como respuesta ErikNeller viernes, 10 de marzo de 2017 10:20
    viernes, 10 de marzo de 2017 8:50