お世話になっております。
WindowsServer2003かどうかを判別したいのですが、
メジャーバージョン、マイナーバージョンが
WindowsXP x64 Edition と同じ5.2のようなのです。
判別方法を教えていただけませんでしょうか?
GetVersionExを使って取得した
OSVERSIONINFO構造体のdwMajorVersion,dwMinorVersionメンバの値からもとめれるんじ
ゃないかなぁと。
http://wisdom.sakura.ne.jp/system/winapi/win32/win38.html
すみません、意味不明でした。
>WindowsServer2003
と
>WindowsXP x64 Edition
とでメジャーバージョン、マイナーバージョンが
同じだからGetVersionExじゃ判定できないってことを聞いていたんですね。orz
OSVERSIONINFO構造体のdwBuildNumberメンバを使えばよさげ。
http://journal.mycom.co.jp/column/winxp/077/index.html
http://uchukamen.com/Programming/WindowsVersion/index.htm
より
Windows 2003 Server は 3790
Windows Xp は 2600
らしいです。
こんなページが見付かったんですけど、
http://blogs.msdn.com/heaths/archive/2006/02/01/522629.aspx
GetVersionExの引数にOSVERSIONINFOEX構造体を使って、
OSVERSIONINFOEX.wProductTypeの値で判断できるようです。
XP x64は1で、
Server 2003は2か3になるらしい。
なんどもすみません。
http://journal.mycom.co.jp/special/2005/xp64/
を読むと、
>今回使用したWindows XP Professional x64 Editionは、バージョン5.2.3790。
>これはWindows Server 2003 Service Pack 1と同じビルドナンバーとなる。
とあります。
ここで、「Service Pack 1と同じ」ってのをみると
もしかすると、szCSDVersionメンバを使って、Service Pack 1かチェックできるので
は?と思いました。
ただ、先の2つのリンク先からSP1があたっていなくても
ビルド番号はXP x64と一緒になるような気もします。
正確な情報を得るのであればMSの人に聞くのがベストでしょうけど。
>こんなページが見付かったんですけど、
おおっ!
OSVERSIONINFOEXを使うのですね。
http://msdn2.microsoft.com/en-us/library/ms724833.aspx
<MSDN>
wProductType
Any additional information about the system. This member can be one of the
following values.
Value Meaning
VER_NT_DOMAIN_CONTROLLER The system is a domain controller.
0x0000002
VER_NT_SERVER The system is a server.
0x0000003 Note that a server that is also a domain controller
is reported as VER_NT_DOMAIN_CONTROLLER, not
VER_NT_SERVER.
VER_NT_WORKSTATION The operating system is Windows Vista, Windows XP
0x0000001 Professional, Windows XP Home Edition,Windows 2000
Professional, or Windows NT Workstation 4.0.
</MSDN>
# VC6のMSDN見ててもわからぬわけだ,,,orz
wProductType の VER_NT_SERVER で判別することができました。
ありがとうございました。