2016-10-12 3 views
-1

Ich versuche, ein C++ - Programm zu schreiben, das aktuelle Windows-Version identifiziert. Ich sah Dutzende solcher Fragen und Antworten, aber keine von ihnen funktionierte für mich.C++ Windows-Version Problem mit Windows 10 zu Hause

Ich verwende Windows 10 Home Edition.

ich Visual Studio 2015

Erste Optionen verwende, die ich versucht habe:

OSVERSIONINFO osvi; 
    ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); 
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 
    GetVersionEx(&osvi); 
    cout << osvi.dwMajorVersion << endl; 
    cout << osvi.dwMinorVersion << endl; 

Dieser druckt 6 und 2, die nach MSDN auf Windows entspricht 8.

Zweite Optionen, Ich habe versucht:

#include <VersionHelpers.h> 

if (IsWindowsVistaOrGreater()) 
    printf("VistaOrGreater\n"); 
if (IsWindows7OrGreater()) 
    printf("Windows7OrGreater\n"); 
if (IsWindows8OrGreater()) 
    printf("Windows8OrGreater\n"); 
if (IsWindows8Point1OrGreater()) 
    printf("Windows8Point1OrGreater\n"); 
if (IsWindows10OrGreater()) 
    printf("Windows10OrGreater\n"); 

Auf diese Weise, IsWindows10OrGreater() ist nicht in meinem System definiert und gibt Kompilierungsfehler.

Irgendwelche Hilfe dabei?

Antwort

2

In Windows 8.1 und Windows 10 sind die Funktionen GetVersion und GetVersionEx veraltet. Anwendungen, die nicht für Windows 8.1 oder Windows 10 manifestiert sind, geben den Windows 8-Betriebssystemversionswert (6.2) zurück.

Weitere Informationen finden Sie unter Targeting your application for Windows.

+0

Also für Windows 10 ist nur durch dieses Manifeste zu tun? – mbaros

+1

@mbaros anscheinend nicht. Die verknüpfte Frage hat eine sehr clevere Lösung, die Sie ausprobieren könnten. – jhbh

+0

Ja. Das habe ich schon gesehen. Danke – mbaros