Microsoft 製品に組み込まれている Visual Basic の実装。
を参考に標準モジュールにて、
Sub test1()
Dim oLocator As Object
Dim oService As Object
Dim oClassSet As Object
Dim oClass As Object, prp As Object
Dim i As Long, j As Long
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
Set oClassSet = oService.ExecQuery("Select * From Win32_OperatingSystem")
For Each oClass In oClassSet
For Each prp In oClass.properties_
i = i + 1
If IsArray(prp.Value) Then
For j = 0 To UBound(prp.Value)
Debug.Print i, prp.Name, prp(j)
Next
Else
Debug.Print i, prp.Name, prp.Value
End If
j = j + 1
Next
Next
Set oClassSet = Nothing: Set oService = Nothing: Set oLocator = Nothing
End Sub
とするとイミディエイト ウィンドウにごちゃっと出力されるので欲しいとこだけ取り出して
Function OSinfo() As String
Dim oLocator As Object
Dim oService As Object
Dim oClassSet As Object
Dim oClass As Object, prp As Object
Dim i As Long, j As Long
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
Set oClassSet = oService.ExecQuery("Select * From Win32_OperatingSystem")
For Each oClass In oClassSet
OSinfo = oClass.Caption & "|" & oClass.Version & "|" & oClass.OSArchitecture
Next
Set oClassSet = Nothing: Set oService = Nothing: Set oLocator = Nothing
End Function
で下のようなのが取得できます。
Mirosoft Windows 10 Pro|10.0.10240|64 ビット
Application.OperatingSystemについては今後のアップデートに期待しましょ。