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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como comprobar si Windows es de 32 o 64 bits en C++?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Como comprobar si Windows es de 32 o 64 bits en C++?  (Leído 12,819 veces)
Kajjin112

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Como comprobar si Windows es de 32 o 64 bits en C++?
« en: 24 Junio 2013, 04:46 am »

Hola a todos, estoy creando una pequña aplicacion para ejecutar secuencialmente una serie de programas para llevar a cabo un mantenimiento completo del sistema. En esa aplicacion incluyo programas para actualizar software, optimizar y borrar lo innecesario, entre otras cosas.
La cosa es que cuando tengo que ejecutar CCleaner desde mi aplicacion, tengo que elegir entre ejecutar CCleaner.exe o CClener64.exe dependiendo de la arquitectura de Windows. Yo lo que quiero hacer es, luego de la funcion main, es declarar una variable con if (creo), para asignarle a la variable SO alguno de estos dos valores: x32 y x64.
Para determinar si el Sistema Operativo es x32 o x64, habia pensado en comprobar la existencia de la carpeta "C:\Program Files (x86)". En otras palabras, seria algo asi:

Código:
int main(){
    int SO
    if exist "%systemdrive%\Program Files (x86)"{
             SO == x64}
             else{
                   SO == x32}
Entonces la variable SO quedaria con un valor de x32 o x64. Despues, a la hora de ejecutar CCleaner, el codigo seria algo asi:

Código:
while(SO == x64){
                system("CCleaner64.exe");
                 }
                 else{
                        system("CCleaner.exe");

Coloquialmente seria:
"Si existe la carpeta '%systemdrive%/Program Files (x86)' el sistema operativo es x64, sino, es x32. Siempre que el sistema operativo sea x64, ejecutar 'CCleaner64.exe', sino, ejecutar 'CCleaner.exe'"

Como pueden ver soy nuevo en esto de la programacion en C++. Anteriormente hice algunos archivos en batch, por eso algunos de los comandos que utilizo son de batch (como el if exist o la variable %systemdrive%), porque no se como serian en C++.
Espero que hayan entendido mi duda y puedan ayudarme, gracias de antemano.


En línea

ecfisa

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #1 en: 24 Junio 2013, 05:07 am »

Hola Kajjin112.

Podes utilizar la función: IsWow64Process

Saludos :)


En línea

ThePinkPanther

Desconectado Desconectado

Mensajes: 82



Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #2 en: 24 Junio 2013, 06:26 am »

Dudo que exista el if exists , eso es batch.  :-\
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #3 en: 24 Junio 2013, 11:57 am »

Sencillo, haz una versión en 64 bits y otra en 32 bits.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Kajjin112

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #4 en: 24 Junio 2013, 17:21 pm »

Hola Kajjin112.

Podes utilizar la función: IsWow64Process

Saludos :)
Esa funcion es para saber si un determinado proceso esta ejecutandose bajo WOW64 o no. Lo que yo quiero es comprobar la existencia de una carpeta predefinida en el codigo fuente del programa, para hacer UN SOLO programa.
Tienen idea de que funcion puedo usar? (Sé que if exist es batch, lo que yo estoy buscando seria algo asi como el equivalente de if exist en c++)
En línea

maxim_o

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #5 en: 24 Junio 2013, 17:43 pm »

Creo que es esto lo que quieres:
http://foro.elhacker.net/programacion_cc/c_comprobar_si_existe_carpeta_elsecrear_carpetas-t112877.0.html
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #6 en: 24 Junio 2013, 18:00 pm »

.
« Última modificación: 25 Junio 2013, 00:07 am por daryo » En línea

buenas
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #7 en: 24 Junio 2013, 18:06 pm »

Puedes probar con directivas condicionales del compilador, si utilizas el Visual Studio es muy sencillo, existen los defines: _WIN32 y _WIN64.

Te pongo un ejemplo:

Código
  1. #ifdef _WIN64
  2. printf("WIN64\n");
  3. #else
  4. printf("WIN32\n");
  5. #endif
  6.  

Pero si usas GCC tienes que utilizar sus macros específicas:

http://stackoverflow.com/questions/1505582/determining-32-vs-64-bit-in-c

Saludos.
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #8 en: 24 Junio 2013, 18:16 pm »

.
« Última modificación: 25 Junio 2013, 00:07 am por daryo » En línea

buenas
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #9 en: 24 Junio 2013, 20:08 pm »

*FACEPALM* Santa mier* chicos por favor diganme que eso de usar macros del preprocesador solo
lo dicen como trolls... Ya dieron la respuesta a la pregunta, se puede utilizar IsWow64Process para saber si un proceso
esta siendo ejecuta como un WoW64, si lo es, entonces estamos en un Windows de 64 bits, sino, es de 32bits.

Esto no es de si queremos compilar un PE32 o PE32+
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[TIP][BITS] Comprobar si es multiple de potencia de dos...
Programación Visual Basic
Karcrack 1 5,398 Último mensaje 26 Agosto 2010, 23:35 pm
por Psyke1
Como comprobar el modo del procesador en Windows?
ASM
t4r0x 8 4,152 Último mensaje 24 Septiembre 2014, 21:52 pm
por x64core
Cómo saber si un programa de Windows es de 32 o 64 bits
Noticias
wolfbcn 0 3,027 Último mensaje 9 Diciembre 2016, 21:23 pm
por wolfbcn
Cómo comprobar el estado de tu PC en Windows 10
Noticias
wolfbcn 0 1,927 Último mensaje 26 Septiembre 2018, 21:26 pm
por wolfbcn
Comprobar que ISO de Windows descargada por partes no esté corrupta
Windows
curious_29 1 2,356 Último mensaje 10 Diciembre 2019, 10:16 am
por knario
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines