タイトル | : Re: Windowsのバージョンの判別方法 |
記事No | : 13762 |
投稿日 | : 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
|