|
Título: No me lee el valor Publicado por: Invader-X en 16 Noviembre 2024, 19:29 pm Hola a todos,
Me inicié hace poco con C++ y estoy estudiando las lecturas del registro. Tengo el siguiente códio: Código: #include <iostream> La clave Probando la he creado yo para investigar, conteniendo de datos una ruta. La ruta existe, el valor también y los datos también, además de que estoy ejecutando el programa como administrador. Sin Embargo, me pone que hay un error leyendo el valor, porque me lleva a la cláusula de "Error al leer el valor" (La tuve que poner porque no sabía dónde estaba el error). ¿Me podríais decir qué estoy haciendo mal?. También de paso preguntar cómo puedo pasarle un valor que no sea reg_sz, si no que pueda ser cualquiera y lo pueda leer igualmente, me gustaría poder identificar cualquier tipo que haya, ya sea reg_sz, regExpand_sz, Dowrd... Muchas gracias por adelantado. Título: Re: No me lee el valor Publicado por: Eternal Idol en 16 Noviembre 2024, 20:00 pm ¿Estas ejecutando un programa de 32 bits en un S.O. de 64 bits por casualidad? Si es asi las claves estan redirigidas ...
https://learn.microsoft.com/en-us/windows/win32/winprog64/registry-redirector Opciones: escribir el valor Probando en HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run, usar KEY_READ | KEY_WOW64_64KEY al abrir la clave o generar un ejecutable de 64 bits. https://learn.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexa El cuarto parametro de RegQueryValueExW permite averiguar que tipo de valor es. Título: Re: No me lee el valor Publicado por: Invader-X en 16 Noviembre 2024, 20:19 pm ¿Estas ejecutando un programa de 32 bits en un S.O. de 64 bits por casualidad? Si es asi las claves estan redirigidas ... https://learn.microsoft.com/en-us/windows/win32/winprog64/registry-redirector Opciones: escribir el valor Probando en HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run, usar KEY_READ | KEY_WOW64_64KEY al abrir la clave o generar un ejecutable de 64 bits. https://learn.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexa El cuarto parametro de RegQueryValueExW permite averiguar que tipo de valor es. Hola Eternal Idol, Posiblemente estoy usando los bits intercambiados, nunca he probado C++, sólo he usado el visual studio para html y css. Comentarte que he puesto la ruta con el wow6432Node y me marca el mismo error, que no se puede acceder al valor. Te paso el code aunque creo que da error una parte que me has dicho y que seguramente yo habré interpretado mal: Código: #include <iostream> El error me lo marca aquí: KEY_WOW64_64KEY. gracias por la paciencia y la molestia que te tomas en responder. Título: Re: No me lee el valor Publicado por: Eternal Idol en 16 Noviembre 2024, 20:37 pm Comentarte que he puesto la ruta con el wow6432Node y me marca el mismo error, que no se puede acceder al valor. ¿Te referis a usar KEY_WOW64_64KEY? El error me lo marca aquí: KEY_WOW64_64KEY. A mi tu ultimo codigo me compila y me funciona bien, si te da un error al compilar vas a tener que mostrar el output del compilador. Y si te compila, cambia el codigo para saber que valor retorna RegQueryValueExW, sabemos que no es ERROR_SUCCESS solamente. PD. En el Adminstrador de tareas podes ver la arquitectura de tu programa (deberia ser x86 o x64). Título: Re: No me lee el valor Publicado por: Invader-X en 16 Noviembre 2024, 20:58 pm ¿Te referis a usar KEY_WOW64_64KEY? A mi tu ultimo codigo me compila y me funciona bien, si te da un error al compilar vas a tener que mostrar el output del compilador. Y si te compila, cambia el codigo para saber que valor retorna RegQueryValueExW, sabemos que no es ERROR_SUCCESS solamente. PD. En el Adminstrador de tareas podes ver la arquitectura de tu programa (deberia ser x86 o x64). Hola de nuevo Eternal Idol, Con respecto a tu primera pregunta, me refería a poner la ruta así: Código: LPCWSTR subclave = L"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"; Te muestro el error que me sale con el último código: Código: error: 'KEY_WOW64_64KEY' was not declared in this scope Y respondiendo a tu otra pregunta, sí, mi ordenador es de 64 bits. Intentaría mostrarte la salida del error pero al marcarme el error ese que te escribí no puedo compilarlo y capturar la salida que me genera, así que no sé muy bien cómo proceder debido al error y ahora manejo el último código porque es con el que estamos trabajando, para no liar más el tema. gracias nuevamente. Título: Re: No me lee el valor Publicado por: Eternal Idol en 16 Noviembre 2024, 21:09 pm Con respecto a tu primera pregunta, me refería a poner la ruta así: Código: LPCWSTR subclave = L"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"; Claro eso no tiene mucho sentido, ya estabas leyendo desde ahi, lo que podes hacer es ir al Editor del registro y crear el valor Probando en esa clave. Te muestro el error que me sale con el último código: Código: error: 'KEY_WOW64_64KEY' was not declared in this scope ¿Que compilador estas usando? Con el VC++ me compila bien ... Podes cambiar KEY_WOW64_64KEY por 0x100 para salir del paso. Título: Re: No me lee el valor Publicado por: Invader-X en 17 Noviembre 2024, 16:35 pm Claro eso no tiene mucho sentido, ya estabas leyendo desde ahi, lo que podes hacer es ir al Editor del registro y crear el valor Probando en esa clave. ¿Que compilador estas usando? Con el VC++ me compila bien ... Podes cambiar KEY_WOW64_64KEY por 0x100 para salir del paso. Hola de nuevo, He probado lo que dijiste y poner el valor "Probando" en wow6432Node, efectivamente, en esa clave funciona sin problemas y al quitarle el wow6432node y poner la clave sin ello sigue leyendo el mismo resultado. Intuyo que lo estoy compilando a 32 bits en un sistema de 64 y por eso no me está leyendo la normal sin el wow6432Node. Estoy usando Mingw (g++), esta versión: MinGW - Minimalist GNU for Windows. Imagino que si instalo otro compilador de 64 bits la ruta normal me la leerá y para leer la otra tendría que usar la otra clave. Así que en teoría, ¿Lo que está fallando es el compilador y lo está compilando todo a 32 bits y por eso no lee la clave sin el wow6432node? ¿Me recomiendas alguno más actualizado y de 64 bits?. gracias nuevamente. Título: Re: No me lee el valor Publicado por: Eternal Idol en 17 Noviembre 2024, 17:20 pm Siempre prefiero usar las herramientas del fabricante del S.O., ya sea Xcode para macOS o en este caso Visual Studio (Visual C++) para Windows.
|