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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C/C++] Detectar versión de Windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C/C++] Detectar versión de Windows  (Leído 2,224 veces)
_TTFH_3500

Desconectado Desconectado

Mensajes: 123



Ver Perfil
[C/C++] Detectar versión de Windows
« en: 8 Abril 2016, 02:45 am »

Quería saber como hacer para detectar la versión de Windows en C, sin importar que ejecute el programa en modo de compatibilidad, de hecho me alcanza con encontrar el primer numero en la versión (en win xp y 2000 es el 5, en win 7, 8 y 8.1 es el 6, en win 10 el 10, etc.).

Se que hay otras menares de detectar la versión como si existe "Documents and Setting", si existe d3d12.exe, pero me gustaría algo mas general.

En Batch seria asi y siempre funciona ya que 'ver' es igual en modo compatibilidad.
Código
  1. @Echo off
  2. echo La version es: && ver
  3. ver | find "5." > nul
  4. If %ERRORLEVEL% == 0 (
  5.  echo Windows 2000 o XP detectado
  6. )

En Visual Basic Script seria:
Código
  1. Set oWMI = GetObject("winmgmts:\\.\root\CIMV2")
  2. Set cWin = oWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem")
  3. For Each OS In cWin
  4.  message = MSGBOX(OS.Version, 16, "La version es:")
  5.  If Split(OS.Version,".")(0) = 5 Then
  6.    message = MSGBOX("Windows 2000 o XP detectado", 16, "Mensaje")
  7.  End If
  8. Next


Pero en C no me funciona, ademas de que GetVersion devuelve otro valor en win8.1 y win10.
Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3. int main() {
  4.  DWORD dwVersion = GetVersion();
  5.  DWORD dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
  6.  DWORD dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
  7.  DWORD dwBuild = 0;
  8.  if (dwVersion < 0x80000000)
  9.    dwBuild = (DWORD)(HIWORD(dwVersion));
  10.  printf("La version es: %d.%d.%d\n", dwMajorVersion, dwMinorVersion, dwBuild);
  11.  if (dwMajorVersion == 5)
  12.    printf("Windows 2000 o XP detectado");
  13. }

Lo que busco es lo que en el ejemplo seria el valor de la variable dwMajorVersion


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.513


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [C/C++] Detectar versión de Windows
« Respuesta #1 en: 8 Abril 2016, 03:04 am »

Revisaste esta info?

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

_TTFH_3500

Desconectado Desconectado

Mensajes: 123



Ver Perfil
Re: [C/C++] Detectar versión de Windows
« Respuesta #2 en: 8 Abril 2016, 04:36 am »

Revisaste esta info?

Saludos!

Si, las funciones IsWindows**OrGreater en versionhelpers.h se basan en que por ejemplo en winXP no puedo ejecutar en modo compatibilidad con Win7, entonces estaría usando WinXP o mayor, pero no funciona si es al revés porque si ejecuto en modo compatibilidad con X versión, tengo esa versión o mayor y no se exactamente cual.

Creo que podría solucionarlo con esto: https://msdn.microsoft.com/en-us/library/windows/desktop/ms725492%28v=vs.85%29.aspx, luego lo pruebo.

Usando VerifyVersionInfo y lpVersionInfo de windows.h

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
detectar version del Internet Explorer...
Programación Visual Basic
gbrlz 5 3,339 Último mensaje 13 Enero 2008, 02:37 am
por Dynamique
Detectar Windows Vista
Programación Visual Basic
aaronduran2 8 3,935 Último mensaje 19 Septiembre 2008, 18:48 pm
por Karcrack
Detectar el shutdown de windows
Windows
gxg 3 4,183 Último mensaje 6 Marzo 2011, 22:19 pm
por Elemental Code
[Python]Detectar memorias USB windows
Scripting
AdeLax 3 6,814 Último mensaje 2 Diciembre 2013, 16:41 pm
por Eleкtro
Detectar Windows 7 Original y no crakeado
Windows
Darksythe 1 1,654 Último mensaje 1 Julio 2014, 20:12 pm
por poddlehawk
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines