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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  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,820 veces)
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 #10 en: 24 Junio 2013, 23:04 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+

Jajajaja leí rápido la pregunta y ni me di cuenta de lo que escribía.

Saludos.


En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


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

Lo que yo quiero es comprobar la existencia de una carpeta predefinida en el codigo fuente del programa, para hacer UN SOLO programa.

Creo que lo que pretendes es averiguar el tipo de sistema operativo a traves del nombre de una carpeta, en ese extraño caso aqui tienes un buen ejemplo:

http://msdn.microsoft.com/en-us/library/ms724426(v=vs.85).aspx

Si lo que quieres es saber el sistema operativo que se esta ejecutando prueba con esta funcion:

http://msdn.microsoft.com/en-us/library/ms724451(v=vs.85).aspx


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #12 en: 25 Junio 2013, 08:37 am »

Creo que lo que pretendes es averiguar el tipo de sistema operativo a traves del nombre de una carpeta, en ese extraño caso aqui tienes un buen ejemplo:

http://msdn.microsoft.com/en-us/library/ms724426(v=vs.85).aspx

Si lo que quieres es saber el sistema operativo que se esta ejecutando prueba con esta funcion:

http://msdn.microsoft.com/en-us/library/ms724451(v=vs.85).aspx

Innecesario para eso hay APIs para que recuperan el path correcto.
Averiguar la version usando por ejemplo un directorio como "Program Files (x86)" no te asegura nada, yo puedo tener un Windows de 32bits
y puedo crear el directorio "Program Files (x86)" y como resultado indicaria que estoy en uno de 64-bits lo cual es incorrecto.
La respuesta es IsWow64Process
En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #13 en: 25 Junio 2013, 16:33 pm »

Innecesario para eso hay APIs para que recuperan el path correcto.
Averiguar la version usando por ejemplo un directorio como "Program Files (x86)" no te asegura nada, yo puedo tener un Windows de 32bits
y puedo crear el directorio "Program Files (x86)" y como resultado indicaria que estoy en uno de 64-bits lo cual es incorrecto.
La respuesta es IsWow64Process

Si lo que se busca es saber si estamos en 32 o 64 bits pues con iswow64 es suficiente para ese proposito. Por el anterior mensaje del autor del post decia que iswow64 no le servia  :huh: asi que deberia explicar mejor que es lo que esta buscando.
En línea

Kajjin112

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #14 en: 25 Junio 2013, 19:04 pm »

Hola a todos. Les comento que pude lograr lo que queria, es decir, comprobar la existencia de una carpeta definida en el codigo fuente y si existe, darle a la variable SO un valor de x64. En lugar de hacerlo con Program Files (x86) lo hice con SysWOW64. El codigo quedo así:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <windows.h>

using namespace std;

int main(){
//Identificar Sistema Operativo
int SO, x64, x32;
if (GetFileAttributes("%windir%\\SysWOW64")==1){
SO==x64;
}else{
SO==x32;
}

Y a la hora de que el programa decida si abrir CCleaner x32 o x64 el codigo es asi:

      
Código:
if(SO==x64){
system("archivos\\CCleaner\\CCleaner64.exe");
}else{
system("archivos\\CCleaner\\CCleaner.exe");
      
Como bien dijo x64Core, esa carpeta puede crearse y hacer que el programa falle. A mi parecer la funcion IsWow64 no me sirve para este caso, porque según entendí, esa funcion lo que hace es identificar si un proceso que esta ejecutandose es de 32 o 64 bits, no si se debe ejecutar un .exe de 32 o 64 bits depende el sistema operativo, o me equivoco?
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


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

Hola a todos. Les comento que pude lograr lo que queria, es decir, comprobar la existencia de una carpeta definida en el codigo fuente y si existe, darle a la variable SO un valor de x64. En lugar de hacerlo con Program Files (x86) lo hice con SysWOW64. El codigo quedo así:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <windows.h>

using namespace std;

int main(){
//Identificar Sistema Operativo
int SO, x64, x32;
if (GetFileAttributes("%windir%\\SysWOW64")==1){
SO==x64;
}else{
SO==x32;
}

Y a la hora de que el programa decida si abrir CCleaner x32 o x64 el codigo es asi:

      
Código:
if(SO==x64){
system("archivos\\CCleaner\\CCleaner64.exe");
}else{
system("archivos\\CCleaner\\CCleaner.exe");
      
Como bien dijo x64Core, esa carpeta puede crearse y hacer que el programa falle. A mi parecer la funcion IsWow64 no me sirve para este caso, porque según entendí, esa funcion lo que hace es identificar si un proceso que esta ejecutandose es de 32 o 64 bits, no si se debe ejecutar un .exe de 32 o 64 bits depende el sistema operativo, o me equivoco?

IsWow64Process indicara si el proceso se esta ejecutando como WoW64, es como se ejecutan los procesos de 32bits en Window de 64-bits

Código:
r = IsWow64Process(-1,&OS)
if(r)
{
   if(OS)
   {
      // Windows de 64-bits
   }
   else
   {
      // Windows de 32-bits
   }
}



En línea

Kajjin112

Desconectado Desconectado

Mensajes: 22


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

Claro, pero este archivo que estoy programando se ejecuta en 32 bits. Entonces, podemos ejecutar este archivo en sistemas windows 32 y 64 bits. Lo que se ejecuta en 64 bits si el SO es compatible es el CCleaner, por eso CREO que IsWow64 no me sirve para elegir si ejecutar el archivo x64 o el x86 dependiendo de la arquitectura del SO
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


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

Claro, pero este archivo que estoy programando se ejecuta en 32 bits. Entonces, podemos ejecutar este archivo en sistemas windows 32 y 64 bits. Lo que se ejecuta en 64 bits si el SO es compatible es el CCleaner, por eso CREO que IsWow64 no me sirve para elegir si ejecutar el archivo x64 o el x86 dependiendo de la arquitectura del SO
No entendi por la forma en que escribes, de todos modos programados compilados en 32-bits se pueden
ejecutar tanto en Windows de 32 y 64 (WOW64) .
En línea

Kajjin112

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #18 en: 27 Junio 2013, 02:36 am »

Así es. Mi problema se solucionó, y gracias a todos por la ayuda. Saludos.
En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Como comprobar si Windows es de 32 o 64 bits en C++?
« Respuesta #19 en: 27 Junio 2013, 03:31 am »

El ccleaner de 32 bits funciona para arquitectura de 64 bits.
En línea

I like to test things.
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