tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。