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」と判断できますが、
だれか教えてください。
よろしくお願いします。

A 回答 (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だと区別できます。
    • good
    • 0

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



参考URL:http://msdn.microsoft.com/library/default.asp?ur …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報