elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  RegSetValueEx me crea la regla en chino?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: RegSetValueEx me crea la regla en chino?  (Leído 2,389 veces)
Borito30


Desconectado Desconectado

Mensajes: 481


Ver Perfil
RegSetValueEx me crea la regla en chino?
« en: 4 Febrero 2017, 14:47 pm »

Hola tengo una duda estuve haciendo unas modificaciones porque quería simplemente una regla usando qt y como compilador visual studio 2013.. normalmente estaba acostumbrado hacer esto:

Código:
string subclave="Hello";
string valor="Anyone";
LPCTSTR _subclave = TEXT("");
LPCTSTR _valor = TEXT("");
long crear = RegSetValueEx(key, _subclave, 0, REG_SZ, (LPBYTE) _valor, strlen(_valor) * sizeof(char));

Pero me daba los siguientes errores:


Entonces hice los cambias que me pedia:
Código:
string hola="hola";
std::wstring stemp = std::wstring(hola.begin(), hola.end());
LPCWSTR subclave = stemp.c_str();
const char * valor = "hola";
long crear = RegSetValueEx(key, subclave, 0, REG_SZ, (LPBYTE) valor,     strlen(valor) * sizeof(char));

Pero me escribe la regla en chino y no se como solucionarlo



En línea

Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: RegSetValueEx me crea la regla en chino?
« Respuesta #1 en: 4 Febrero 2017, 14:54 pm »

Perdona que responda así, pero me tengo que ir y no quería dejar esto:
https://github.com/ivancea/Varios/blob/master/C%2B%2B/reg.h

Échale u ojo a cómo lo llamo ahí. *Creo que funcionaba correctamente*. Luego cuando esté si no te funcionó así, lo pruebo.

EDITO: Ya lo probé, y bien. Ese RegSetValueEx, en mi caso, llama a RegSetValueAxA (la versión ANSI). También podrías llamar explícitamente a RegSetValueKeyExW usando wstring.

Código
  1. #include <windows.h>
  2. #include <iostream>
  3.  
  4. void regAdd(HKEY type, std::string ruta, std::string valor, std::string data){
  5.    HKEY key;
  6.    RegCreateKey(type,ruta.c_str(),&key);
  7.    RegSetValueExA(key, valor.c_str(), 0, REG_SZ, (const BYTE*)data.c_str(),data.size());
  8.    RegCloseKey(key);
  9. }
  10.  
  11. int main(){
  12. regAdd(HKEY_CURRENT_USER, "Test", "prueba", "datos");
  13. }

Y con respecto al error que tienes tú:
En el primer código que pusiste, no puedes llamar a strlen con de TCHAR*. Yo de ti prescindiría de los LPCTSTR y pasaría directamente los valores de las string. Y bueno, en vez de strlen, valor.size().


« Última modificación: 4 Febrero 2017, 15:17 pm por ivancea96 » En línea

Borito30


Desconectado Desconectado

Mensajes: 481


Ver Perfil
Re: RegSetValueEx me crea la regla en chino?
« Respuesta #2 en: 4 Febrero 2017, 15:51 pm »

Tienes razon lo crea perfectamente hice lo siguiente como me dijistes y funciona correctamente:
Código:
#include <windows.h>
#include <iostream>
string valor = "prueba";
string data = "prueba";
long crear = RegSetValueExA(key, valor.c_str(), 0, REG_SZ, (const BYTE*)data.c_str(),data.size());
Gracias.
En línea

Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines