如何写程序判断操作系统的类型?
想用程序来判断一下,用户使用的操作系统的类型,以便自己的程序能兼容这些系统,请问,如何获取这些系统的类型。如 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 '-----------------------------------------------------------------------------------------------------------