簡體   English   中英

如何使用預處理程序指令檢查操作系統版本(Windows)?

[英]How can I check OS version (Windows) with preprocessor directives?

我想知道是否有機會檢查我真正使用的Windows版本。 類似於: 如何使用預處理程序指令檢查操作系統?

我試過MSDN的代碼:

  1. http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451(v=vs.85).aspx
  2. http://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx

但是他們中的任何一個給了我很好的結果(例如:根據http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx我的代碼應該打印5.1時我在Windows XP上,但它顯示5 ...)

有沒有可靠的方法(我更喜歡預處理器指令的方式)來找出我正在使用的Windows?

我的代碼:

#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;
}

你實際上得到了正確的結果。 但是你只打印主要版本:

std::cout << osvi.dwMajorVersion << "\n";

而是嘗試使用:

if (osvi.dwMinorVersion >= 1) {
     std::cout << osvi.dwMajorVersion << "." << osvi.dwMinorVersion << std::endl;
} else {
     std::cout << osvi.dwMajorVersion << std::endl;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM