Computer System Information using WMI

Computer system info for the local computer can be returned using WMI. Here we will iterate through the Win32_ComputerSystem WMI class to check the available properties.

Some of the properties have been commented out below; those are either not supported by Windows XP (my test machine) or are collections that require iteration in their own right. Check the MSDN article for the Win32_ComputerSystem class (see above for link) to find out more information.

From MSDN:

The Win32_ComputerSystem WMI class represents a computer system running Windows.

Sample usage

Function GetComputerSystemInfo()

Dim objWMI As Object
Dim computerSystems As Object
Dim computerSystem As Object

  Set objWMI = GetWMIService

  Set computerSystems = objWMI.ExecQuery("Select * from Win32_ComputerSystem")

  For Each computerSystem In computerSystems
    Debug.Print computerSystem.AdminPasswordStatus
    'Debug.Print computerSystem.AutomaticManagedPagefile
   Debug.Print computerSystem.AutomaticResetBootOption
    Debug.Print computerSystem.AutomaticResetCapability
    Debug.Print computerSystem.BootOptionOnLimit
    Debug.Print computerSystem.BootOptionOnWatchDog
    Debug.Print computerSystem.BootROMSupported
    Debug.Print computerSystem.BootupState
    Debug.Print computerSystem.Caption
    Debug.Print computerSystem.ChassisBootupState
    Debug.Print computerSystem.CreationClassName
    Debug.Print computerSystem.CurrentTimeZone
    Debug.Print computerSystem.DaylightInEffect
    Debug.Print computerSystem.Description
    'Debug.Print computerSystem.DNSHostName
   Debug.Print computerSystem.Domain
    Debug.Print computerSystem.DomainRole
    Debug.Print computerSystem.EnableDaylightSavingsTime
    Debug.Print computerSystem.FrontPanelResetStatus
    Debug.Print computerSystem.InfraredSupported
    Debug.Print computerSystem.InitialLoadInfo
    Debug.Print computerSystem.InstallDate
    Debug.Print computerSystem.KeyboardPasswordStatus
    Debug.Print computerSystem.LastLoadInfo
    Debug.Print computerSystem.Manufacturer
    Debug.Print computerSystem.Model
    Debug.Print computerSystem.Name
    Debug.Print computerSystem.NameFormat
    Debug.Print computerSystem.NetworkServerModeEnabled
    'Debug.Print computerSystem.NumberOfLogicalProcessors
   Debug.Print computerSystem.NumberOfProcessors
    Debug.Print computerSystem.OEMLogoBitmap
    'Debug.Print computerSystem.OEMStringArray
   Debug.Print computerSystem.PartOfDomain
    Debug.Print computerSystem.PauseAfterReset
    'Debug.Print computerSystem.PCSystemType
   Debug.Print computerSystem.PowerManagementCapabilities
    Debug.Print computerSystem.PowerManagementSupported
    Debug.Print computerSystem.PowerOnPasswordStatus
    Debug.Print computerSystem.PowerState
    Debug.Print computerSystem.PowerSupplyState
    Debug.Print computerSystem.PrimaryOwnerContact
    Debug.Print computerSystem.PrimaryOwnerName
    Debug.Print computerSystem.ResetCapability
    Debug.Print computerSystem.ResetCount
    Debug.Print computerSystem.ResetLimit
    'Debug.Print computerSystem.Roles
   Debug.Print computerSystem.Status
    Debug.Print computerSystem.SupportContactDescription
    Debug.Print computerSystem.SystemStartupDelay
    'Debug.Print computerSystem.SystemStartupOptions
   Debug.Print computerSystem.SystemStartupSetting
    Debug.Print computerSystem.SystemType
    Debug.Print computerSystem.ThermalState
    Debug.Print computerSystem.TotalPhysicalMemory
    Debug.Print computerSystem.UserName
    Debug.Print computerSystem.WakeUpType
    Debug.Print computerSystem.Workgroup
  Next computerSystem

End Function

Function GetWMIService() As Object
' http://msdn.microsoft.com/en-us/library/aa394586(VS.85).aspx
Dim strComputer As String

  strComputer = "."

  Set GetWMIService = GetObject("winmgmts:" _
                              & "{impersonationLevel=impersonate}!\\" _
                              & strComputer & "\root\cimv2")
End Function

Site last updated September 2, 2010 @ 7:03 pm