• ベストアンサー

OSがWindowsXPかの判断について

VC++でOSによって処理内容を変更したいのですがWindowsXPの判断はどういう風にすればいいのでしょうか? NTとかだと OSVERSIONINFO info; ZeroMemory(&info,sizeof(OSVERSIONINFO)); info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); BOOL bRet; bRet = GetVersionEx(&info); if(bRet == FALSE) return FALSE; if(info.dwPlatformId == VER_PLATFORM_WIN32_NT) ・・・ のように「VER_PLATFORM_WIN32_NT」と判断できますが、 だれか教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

最新のヘッダでなくとも、 OSVERSIONINFO.dwBuildNumber OSVERSIONINFO.dwMajorVersion OSVERSIONINFO.dwMinorVersion OSVERSIONINFO.szCSDVersion の各組み合わせを見ることにより、OSを判別できます。 inthefloiさんが書いた参考URLを見れば、WinXPは dwMajorVersion==5 dwMinorVersion==1 だと書いてあります。 さらに wProductType==VER_NT_WORKSTATIONかつ wSuiteMaskのVER_SUITE_PERSONALビットが立って いればWinXP HomeEdだと区別できます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#30727
noname#30727
回答No.1

OSVERSIONINFOEX を使用するのですが、最新のヘッダが無い場合は、応急処置として、自力で書き換える事になると思います。

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/sysinfo_1o1e.asp
すると、全ての回答が全文表示されます。

関連するQ&A