I would like to know if there is any chance to check which Windows version I really use. Something similar to: How do I check OS with a preprocessor directive?.
I tried code from MSDN:
- http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451(v=vs.85).aspx
- http://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx
But any of them gave me good results (for example: according to http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx my code should print 5.1 when Im on Windows XP but it showed 5 ...)
Is there any reliable way (I would prefer preprocessor directives way) to find out which Windows I'm using?
My code:
#include <windows.h>
#include <iostream>
int main()
{
OSVERSIONINFO osvi;
BOOL bIsWindowsXPorLater;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
// I HAD THIS, AND IT WAS WRONG! :<
std::cout << osvi.dwMajorVersion << "\n";
// CHANGED THE ABOVE LINE TO THE LINE BELOW AND IT IS OK NOW :D
std::cout << osvi.dwMajorVersion << "." << osvi.dwMinorVersion << "\n";
return 0;
}