如何写程序判断操作系统的类型?
想用程序来判断一下,用户使用的操作系统的类型,以便自己的程序能兼容这些系统,请问,如何获取这些系统的类型。如 windows xp sp1
windows 7 sp2
等等?
还有:如何获取用户的操作系统的版本语言,如windows简体中文版、windows 英文版、windows繁体中文版等??
[ 本帖最后由 yuma 于 2012-7-7 16:37 编辑 ]
程序代码:Option Explicit
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Sub Form_Load()
Dim osvi As OSVERSIONINFO
Dim bIsWindowsXPorLater As Long
osvi.dwOSVersionInfoSize = Len(osvi)
bIsWindowsXPorLater = GetVersionEx(osvi)
Debug.Print osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber, osvi.dwPlatformId, osvi.szCSDVersion
End Sub


程序代码:
Set oAdapters = GetObject("winmgmts:").ExecQuery("Select * from Win32_OperatingSystem")
ReDim .ListObject(7).Item(61)
.ListObject(7).ObjectName = "<Win32_OperatingSystem>"
frmSplash.LabPoint.Caption = "Load Data From WMI object - " & .ListObject(7).ObjectName
frmSplash.LabPointPercent.Caption = frmSplash.ProgressBarBlue.Value & " %"
For Each oAdapter In oAdapters
DoEvents
.ListObject(7).ObjectCaption = "代表安裝在 Win32 電腦系統上的作業系統。"
.ListObject(7).Item(0).ItemName = "BootDevice"
.ListObject(7).Item(0).ItemContent = oAdapter.BootDevice
.ListObject(7).Item(0).ItemDescription = "指示 Win32 作業系統開機的磁碟機名稱。"
.ListObject(7).Item(1).ItemName = "BuildNumber"
.ListObject(7).Item(1).ItemContent = oAdapter.BuildNumber
.ListObject(7).Item(1).ItemDescription = "指示作業系統的組建號碼。"
.ListObject(7).Item(2).ItemName = "BuildType"
.ListObject(7).Item(2).ItemContent = oAdapter.BuildType
.ListObject(7).Item(2).ItemDescription = "指示作業系統的組建類型。"
.ListObject(7).Item(3).ItemName = "Caption"
.ListObject(7).Item(3).ItemContent = oAdapter.Caption
.ListObject(7).Item(3).ItemDescription = "物件的簡短文字描述 (一行字串)。"
PCCompareInfo.PCOS = Trim(.ListObject(7).Item(3).ItemContent)
.ListObject(7).Item(4).ItemName = "CodeSet"
.ListObject(7).Item(4).ItemContent = oAdapter.CodeSet
.ListObject(7).Item(4).ItemDescription = "指示作業系統使用的碼頁值。"
.ListObject(7).Item(5).ItemName = "CountryCode"
.ListObject(7).Item(5).ItemContent = oAdapter.CountryCode
.ListObject(7).Item(5).ItemDescription = "指示作業系統使用的國碼 (地區碼)。"
.ListObject(7).Item(6).ItemName = "CreationClassName"
.ListObject(7).Item(6).ItemContent = oAdapter.CreationClassName
.ListObject(7).Item(6).ItemDescription = "指示類別或用於建立例項的子類別的名稱。"
.ListObject(7).Item(7).ItemName = "CSCreationClassName"
.ListObject(7).Item(7).ItemContent = oAdapter.CSCreationClassName
.ListObject(7).Item(7).ItemDescription = "包含領域設定電腦系統的建立類別名稱。"
.ListObject(7).Item(8).ItemName = "CSDVersion"
.ListObject(7).Item(8).ItemContent = oAdapter.CSDVersion
.ListObject(7).Item(8).ItemDescription = "包含 null 終止的字串,其指示安裝在電腦系統上的最新 Service Pack。"
PCCompareInfo.OSVersion = Trim(.ListObject(7).Item(8).ItemContent)
.ListObject(7).Item(9).ItemName = "CSName"
.ListObject(7).Item(9).ItemContent = oAdapter.CSName
.ListObject(7).Item(9).ItemDescription = "包含領域設定電腦系統的名稱。"
.ListObject(7).Item(10).ItemName = "CurrentTimeZone"
.ListObject(7).Item(10).ItemContent = oAdapter.CurrentTimeZone
.ListObject(7).Item(10).ItemDescription = "指示作業系統從格林威治中央時間 (Greenwich Mean Time) 所分出的分鐘數。"
.ListObject(7).Item(11).ItemName = "DataExecutionPrevention_32BitApplications"
.ListObject(7).Item(11).ItemContent = oAdapter.DataExecutionPrevention_32BitApplications
.ListObject(7).Item(11).ItemDescription = "如果是真,表示 32 位元應用程式執行時已套用資料執行防止 (DEP)。"
.ListObject(7).Item(12).ItemName = "DataExecutionPrevention_Available"
.ListObject(7).Item(12).ItemContent = oAdapter.DataExecutionPrevention_Available
.ListObject(7).Item(12).ItemDescription = "如果是真,表示硬體支援 Windows 資料執行防止 (DEP) 技術。"
.ListObject(7).Item(13).ItemName = "DataExecutionPrevention_Drivers"
.ListObject(7).Item(13).ItemContent = oAdapter.DataExecutionPrevention_Drivers
.ListObject(7).Item(13).ItemDescription = "如果是真,表示驅動程式執行時已套用資料執行防止 (DEP)。"
.ListObject(7).Item(14).ItemName = "DataExecutionPrevention_SupportPolicy"
.ListObject(7).Item(14).ItemContent = oAdapter.DataExecutionPrevention_SupportPolicy
.ListObject(7).Item(14).ItemDescription = "表示套用了四個資料執行防止 (DEP) 設定值中的哪一個,每一個設定使 DEP 套用到不同範圍的 32 位元應用程式。"
.ListObject(7).Item(15).ItemName = "Debug"
.ListObject(7).Item(15).ItemContent = oAdapter.Debug
.ListObject(7).Item(15).ItemDescription = "指示作業系統是否是一個檢查 (偵錯) 的組建。"
.ListObject(7).Item(16).ItemName = "Description"
.ListObject(7).Item(16).ItemContent = oAdapter.Description
.ListObject(7).Item(16).ItemDescription = "提供 Windows 作業系統的描述。"
.ListObject(7).Item(17).ItemName = "Distributed"
.ListObject(7).Item(17).ItemContent = oAdapter.Distributed
.ListObject(7).Item(17).ItemDescription = "指示電腦系統是否分散到數個電腦系統節點的布林值。"
.ListObject(7).Item(18).ItemName = "EncryptionLevel"
.ListObject(7).Item(18).ItemContent = oAdapter.EncryptionLevel
.ListObject(7).Item(18).ItemDescription = "指定 40 位元,128 位元或 n 位元加密的安全性異動加密等級。"
.ListObject(7).Item(19).ItemName = "ForegroundApplicationBoost"
.ListObject(7).Item(19).ItemContent = oAdapter.ForegroundApplicationBoost
.ListObject(7).Item(19).ItemDescription = "指示給予幕前應用程式的優先順序增加。"
.ListObject(7).Item(20).ItemName = "FreePhysicalMemory"
.ListObject(7).Item(20).ItemContent = oAdapter.FreePhysicalMemory
.ListObject(7).Item(20).ItemDescription = "目前未使用而可用的實體記憶體 KB 數目。"
.ListObject(7).Item(21).ItemName = "FreeSpaceInPagingFiles"
.ListObject(7).Item(21).ItemContent = oAdapter.FreeSpaceInPagingFiles
.ListObject(7).Item(21).ItemDescription = "可以對應到 OperatingSystem 的分頁檔而不會造成任何其他分頁互換的總 KB 數目。"
.ListObject(7).Item(22).ItemName = "FreeVirtualMemory"
.ListObject(7).Item(22).ItemContent = oAdapter.FreeVirtualMemory
.ListObject(7).Item(22).ItemDescription = "目前未使用而可用的虛擬記憶體 KB 數目。"
.ListObject(7).Item(23).ItemName = "InstallDate"
.ListObject(7).Item(23).ItemContent = oAdapter.InstallDate
.ListObject(7).Item(23).ItemDescription = "指示物件被安裝時的日期時間。"
.ListObject(7).Item(24).ItemName = "LargeSystemCache"
.ListObject(7).Item(24).ItemContent = oAdapter.LargeSystemCache
.ListObject(7).Item(24).ItemDescription = "指出是否要為應用程式 (value=0) 或為系統效能 (value=1) 最佳化記憶體。"
.ListObject(7).Item(25).ItemName = "LastBootUpTime"
.ListObject(7).Item(25).ItemContent = oAdapter.LastBootUpTime
.ListObject(7).Item(25).ItemDescription = "作業系統最後開機的時間。"
.ListObject(7).Item(26).ItemName = "LocalDateTime"
.ListObject(7).Item(26).ItemContent = oAdapter.LocalDateTime
.ListObject(7).Item(26).ItemDescription = "本機日期和時間的作業系統概念。"
.ListObject(7).Item(27).ItemName = "Locale"
.ListObject(7).Item(27).ItemContent = oAdapter.Locale
.ListObject(7).Item(27).ItemDescription = "指示作業系統使用的語言識別元。"
.ListObject(7).Item(28).ItemName = "Manufacturer"
.ListObject(7).Item(28).ItemContent = oAdapter.Manufacturer
.ListObject(7).Item(28).ItemDescription = "指示作業系統製造廠商的名稱。"
.ListObject(7).Item(29).ItemName = "MaxNumberOfProcesses"
.ListObject(7).Item(29).ItemContent = oAdapter.MaxNumberOfProcesses
.ListObject(7).Item(29).ItemDescription = "作業系統能支援的處理程序內容的最大數目。"
.ListObject(7).Item(30).ItemName = "MaxProcessMemorySize"
.ListObject(7).Item(30).ItemContent = oAdapter.MaxProcessMemorySize
.ListObject(7).Item(30).ItemDescription = "可被配置到一個處理程序的最大記憶體 KB 數目。"
.ListObject(7).Item(31).ItemName = "Name"
.ListObject(7).Item(31).ItemContent = oAdapter.Name
.ListObject(7).Item(31).ItemDescription = "繼承的 Name 屬性是作為電腦系統中作業系統例項的識別元。"
.ListObject(7).Item(32).ItemName = "NumberOfLicensedUsers"
.ListObject(7).Item(32).ItemContent = oAdapter.NumberOfLicensedUsers
.ListObject(7).Item(32).ItemDescription = "作業系統的使用者授權號碼。"
.ListObject(7).Item(33).ItemName = "NumberOfProcesses"
.ListObject(7).Item(33).ItemContent = oAdapter.NumberOfProcesses
.ListObject(7).Item(33).ItemDescription = "目前載入或執行在作業系統上之處理程序內容的號碼。"
.ListObject(7).Item(34).ItemName = "NumberOfUsers"
.ListObject(7).Item(34).ItemContent = oAdapter.NumberOfUsers
.ListObject(7).Item(34).ItemDescription = "目前存放狀態資訊的作業系統之使用者工作階段的號碼。"
.ListObject(7).Item(35).ItemName = "Organization"
.ListObject(7).Item(35).ItemContent = .ListObject(7).Item(35).ItemDescription = "指出已登錄的作業系統使用者的公司名稱。"
.ListObject(7).Item(36).ItemName = "OSLanguage"
.ListObject(7).Item(36).ItemContent = oAdapter.OSLanguage
.ListObject(7).Item(36).ItemDescription = "指示作業系統安裝的語言版本。"
.ListObject(7).Item(37).ItemName = "OSProductSuite"
.ListObject(7).Item(37).ItemContent = oAdapter.OSProductSuite
.ListObject(7).Item(37).ItemDescription = "識別已安裝和已授權系統產品的作業系統新增物。"
.ListObject(7).Item(38).ItemName = "OSType"
.ListObject(7).Item(38).ItemContent = oAdapter.OSType
.ListObject(7).Item(38).ItemDescription = "指示作業系統類型的一個整數。"
.ListObject(7).Item(39).ItemName = "OtherTypeDescription"
.ListObject(7).Item(39).ItemContent = oAdapter.OtherTypeDescription
.ListObject(7).Item(39).ItemDescription = "描述製造廠商和作業系統類型的字串。"
.ListObject(7).Item(40).ItemName = "PlusProductID"
.ListObject(7).Item(40).ItemContent = oAdapter.PlusProductID
.ListObject(7).Item(40).ItemDescription = "包含 Windows Plus! 作業系統增強軟體 (如果已安裝) 的產品識別碼。"
.ListObject(7).Item(41).ItemName = "PlusVersionNumber"
.ListObject(7).Item(41).ItemContent = oAdapter.PlusVersionNumber
.ListObject(7).Item(41).ItemDescription = "包含 Windows Plus! 作業系統增強軟體 (如果已安裝) 的產品版本號碼。"
.ListObject(7).Item(42).ItemName = "Primary"
.ListObject(7).Item(42).ItemContent = oAdapter.Primary
.ListObject(7).Item(42).ItemDescription = "決定是為這是主要作業系統。"
.ListObject(7).Item(43).ItemName = "ProductType"
.ListObject(7).Item(43).ItemContent = oAdapter.ProductType
.ListObject(7).Item(43).ItemDescription = "指出系統的其他資訊。"
.ListObject(7).Item(44).ItemName = "QuantumLength"
.ListObject(7).Item(44).ItemContent = oAdapter.QuantumLength
.ListObject(7).Item(44).ItemDescription = "定義每一個配量的時鐘滴答數。"
.ListObject(7).Item(45).ItemName = "QuantumType"
.ListObject(7).Item(45).ItemContent = oAdapter.QuantumType
.ListObject(7).Item(45).ItemDescription = "指定固定的或可變動的長度配量。"
.ListObject(7).Item(46).ItemName = "RegisteredUser"
.ListObject(7).Item(46).ItemContent = oAdapter.RegisteredUser
.ListObject(7).Item(46).ItemDescription = "指示作業系統已登錄使用者的名稱。"
.ListObject(7).Item(47).ItemName = "SerialNumber"
.ListObject(7).Item(47).ItemContent = oAdapter.SerialNumber
.ListObject(7).Item(47).ItemDescription = "指出作業系統的產品序號識別碼。"
.ListObject(7).Item(48).ItemName = "ServicePackMajorVersion"
.ListObject(7).Item(48).ItemContent = oAdapter.ServicePackMajorVersion
.ListObject(7).Item(48).ItemDescription = "指示電腦系統安裝的 service pack 主版本數。"
.ListObject(7).Item(49).ItemName = "ServicePackMinorVersion"
.ListObject(7).Item(49).ItemContent = oAdapter.ServicePackMinorVersion
.ListObject(7).Item(49).ItemDescription = "指示電腦系統安裝的 service pack 副版本數。"
.ListObject(7).Item(50).ItemName = "SizeStoredInPagingFiles"
.ListObject(7).Item(50).ItemContent = oAdapter.SizeStoredInPagingFiles
.ListObject(7).Item(50).ItemDescription = "可存放在作業系統分頁檔案的 KB 總數。"
.ListObject(7).Item(51).ItemName = "Status"
.ListObject(7).Item(51).ItemContent = oAdapter.Status
.ListObject(7).Item(51).ItemDescription = "指示物件目前狀態的字串。"
.ListObject(7).Item(52).ItemName = "SuiteMask"
.ListObject(7).Item(52).ItemContent = oAdapter.SuiteMask
.ListObject(7).Item(52).ItemDescription = "指出可以識別系統上可用的組合產品的一組位元旗標。"
.ListObject(7).Item(53).ItemName = "SystemDevice"
.ListObject(7).Item(53).ItemContent = oAdapter.SystemDevice
.ListObject(7).Item(53).ItemDescription = "指示作業系統已安裝的實體磁碟分割。"
.ListObject(7).Item(54).ItemName = "SystemDirectory"
.ListObject(7).Item(54).ItemContent = oAdapter.SystemDirectory
.ListObject(7).Item(54).ItemDescription = "指示作業系統的系統目錄。"
.ListObject(7).Item(55).ItemName = "SystemDrive"
.ListObject(7).Item(55).ItemContent = oAdapter.SystemDrive
.ListObject(7).Item(55).ItemDescription = "包含作業系統所在的磁碟代號。"
.ListObject(7).Item(56).ItemName = "TotalSwapSpaceSize"
.ListObject(7).Item(56).ItemContent = oAdapter.TotalSwapSpaceSize
.ListObject(7).Item(56).ItemDescription = "交換空間的 KB 總數。"
.ListObject(7).Item(57).ItemName = "TotalVirtualMemorySize"
.ListObject(7).Item(57).ItemContent = oAdapter.TotalVirtualMemorySize
.ListObject(7).Item(57).ItemDescription = "虛擬記憶體的 KB 數目。"
.ListObject(7).Item(58).ItemName = "TotalVisibleMemorySize"
.ListObject(7).Item(58).ItemContent = oAdapter.TotalVisibleMemorySize
.ListObject(7).Item(58).ItemDescription = "OperatingSystem 可用的實體記憶體總數 (以 KB 表示)。"
.ListObject(7).Item(59).ItemName = "Version"
.ListObject(7).Item(59).ItemContent = oAdapter.Version
.ListObject(7).Item(59).ItemDescription = "指示作業系統的版本數。"
.ListObject(7).Item(60).ItemName = "WindowsDirectory"
.ListObject(7).Item(60).ItemContent = oAdapter.WindowsDirectory
.ListObject(7).Item(60).ItemDescription = "指示作業系統的 Windows 目錄。"
.ListObject(7).Item(61).ItemName = ""
.ListObject(7).Item(61).ItemContent = ""
.ListObject(7).Item(61).ItemDescription = ""
Exit For
Next
oAdapter = Nothing '-----------------------------------------------------------------------------------------------------------
