タイトル : Re: Windowsのバージョンの判別方法 投稿日 : 2009/06/25(Thu) 15:20 投稿者 : 魔界の仮面弁士
> こちらの別ページに、kernel32を使用した方法が載っておりますが、 > http://hanatyan.sakura.ne.jp/vbhlp/Version.htm ネタ的な方法としては、こんな手もあったりします。 Option Explicit Private Declare Sub GetMem4 Lib "msvbvm60.dll" (ByVal ptr As Long, ByRef ret As Long) Private Sub Command1_Click() Dim major As Long, minor As Long Dim suite As Long, product As Long GetMem4 &H7FFE026C, major GetMem4 &H7FFE0270, minor GetMem4 &H7FFE0264, product GetMem4 &H7FFE02D0, suite Debug.Print "Ver="; CStr(major); "."; CStr(minor) Debug.Print "Product="; product Debug.Print "Suite=&H" & Hex(suite) End Sub > この方法だと、VistaとWindows Server 2008で同じ値を取得してしまいます。 OSVERSIONINFOEX.wProductType が返す値が、 Vista では VER_NT_WORKSTATION だったかと。 > VistaとWindows Server 2008を判別する方法はありますでしょうか。 Win32_OperatingSystem クラスのプロパティにも、何か判定材料になりそうな物があるかも。 # 手元に 2008 環境が無いので確認できず…。 Private Sub Command1_Click() Dim os As Object Dim p As Object For Each os In GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem") For Each p In os.Properties_ Debug.Print p.Name; Tab(45); p.Value Next Next End Sub |