#include <Array.au3>
Global $oWMI, $oItems, $oTmp, $aInfo[25][2], $aTmp, _
$aOS[13][8] = [[12],['Имя ОС', '$oTmp.Caption', '', '', '', '', 0], _
['Версия (версия, сервис-пак, сборка)', '$oTmp.Version', '$oTmp.CSDVersion', '$oTmp.BuildNumber', '', ', ', 1, 2], _
['Дополнительное описание', '$oTmp.Description', '', '', '', '', 2], _
['Изготовитель ОС', '$oTmp.Manufacturer', '', '', '', '', 3], _
['Имя системы', '$oTmp.CSName', '', '', '', '', 4], _
['Папка Windows', '$oTmp.WindowsDirectory', '', '', '', '', 11], _
['Системная папка', '$oTmp.SystemDirectory', '', '', '', '', 12], _
['Устройство загрузки', '$oTmp.BootDevice', '', '', '', '', 13], _
['Язык системы', '_Language($oTmp.OSLanguage)', '', '', '', '', 14], _
['Доступно физической памяти', '$oTmp.FreePhysicalMemory', '', '', '', '', 20], _
['Всего виртуальной памяти', '$oTmp.TotalVirtualMemorySize', '', '', '', '', 21], _
['Доступно виртуальной памяти', '$oTmp.FreeVirtualMemory', '', '', '', '', 22]], _
$aCSP[3][8] = [[2],['Изготовитель', '$oTmp.Vendor', '', '', '', '', 5], _
['Модель', '$oTmp.Name', '', '', '', '', 6]], _
$aCS[4][8] = [[3],['Тип', '$oTmp.SystemType', '', '', '', '', 7], _
['Имя пользователя', '$oTmp.UserName', '', '', '', '', 16], _
['Полный объем физической памяти', '$oTmp.TotalPhysicalMemory', '', '', '', '', 19]], _
$aP[2][8] = [[1],['Процессор(имя, системная шина - Мгц, ядер, логических процессоров)', 'StringStripWS($oTmp.Name, 4)', '$oTmp.MaxClockSpeed', '$oTmp.NumberOfCores', '$oTmp.NumberOfLogicalProcessors', ', ', 8, 2]], _
$aB[3][8] = [[2],['Версия BIOS', '$oTmp.Manufacturer', '$oTmp.SMBIOSBIOSVersion', _
'StringRegExpReplace($oTmp.ReleaseDate, "^(\d{4})(\d{2})(\d{2}).*", "$1/$2/$3")', '', ', ', 9, 2], _
['Версия SMBIOS', '$oTmp.SMBIOSMajorVersion', '$oTmp.SMBIOSMinorVersion', '', '', '.', 10, 1]], _
$aTZ[2][8] = [[1],['Часовой пояс', '$oTmp.StandardName', '', '', '', '', 17]], _
$aPFU[3][8] = [[2],['Размер файла подкачки', '$oTmp.AllocatedBaseSize', '', '', '', '', 23], _
['Файл подкачки', '$oTmp.Name', '', '', '', '', 24]], _
$aPM[2][8] = [[1],['Установленная физическая память (RAM)', '$oTmp.Capacity', '', '', '', '+', 18]], _
$aFrom[9][2] = [[8],['Win32_OperatingSystem', $aOS],['Win32_ComputerSystemProduct', $aCSP],['Win32_ComputerSystem', $aCS], _
['Win32_Processor', $aP],['Win32_BIOS', $aB],['Win32_TimeZone', $aTZ],['Win32_PageFileUsage', $aPFU],['Win32_PhysicalMemory', $aPM]]
$oWMI = ObjGet('winmgmts:\\localhost\root\CIMV2')
If @error Then Exit 1
For $w = 1 To $aFrom[0][0]
$oItems = $oWMI.ExecQuery('SELECT * FROM ' & $aFrom[$w][0], 'WQL', 0x30)
If Not IsObj($oItems) Then Exit 2
$aTmp = $aFrom[$w][1]
For $oTmp In $oItems
For $i = 1 To $aTmp[0][0]
$aInfo[$aTmp[$i][6]][0] = $aTmp[$i][0]
For $j = 1 To 4
If Not $aTmp[$i][$j] Then ExitLoop
$aInfo[$aTmp[$i][6]][1] &= Execute($aTmp[$i][$j]) & $aTmp[$i][5]
Next
If $aTmp[$i][7] Then $aInfo[$aTmp[$i][6]][1] = StringTrimRight($aInfo[$aTmp[$i][6]][1], $aTmp[$i][7])
Next
Next
;~ If $w = $aFrom[0][0] Then $aInfo[$aTmp[$i - 1][6]][1] = StringFormat('%.2f Gb', Execute($aInfo[$aTmp[$i - 1][6]][1] & '0') / 1024 ^ 3)
Next
;~ не нашел в WMI
$aInfo[15][0] = 'Аппаратно-зависимый уровень (HAL)(версия)'
$aInfo[15][1] = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataAccess', 'Version')
$aInfo[18][1] = StringFormat('%.2f Gb', Execute($aInfo[18][1] & '0') / 1024 ^ 3)
$aInfo[19][1] = StringFormat('%.2f Gb', $aInfo[19][1] / 1024 ^ 3)
For $i = 20 To 22
$aInfo[$i][1] = StringFormat('%.2f Gb', $aInfo[$i][1] / 1024 ^ 2)
Next
$aInfo[23][1] = StringFormat('%.2f Gb', $aInfo[23][1] / 1024)
_ArrayDisplay($aInfo)
Func _Language($i_Lang)
Switch StringLower(Hex($i_Lang, 4))
Case '0419', '0819'
Return 'Русский'
Case '0422'
Return 'Украинский'
Case '0423'
Return 'Белорусский'
Case '0437'
Return 'Грузинский'
Case '082c'
Return 'Азербайджанский'
Case '0443', '0843'
Return 'Узбекский'
Case '043f'
Return 'Казахский'
Case '0444'
Return 'Татарский'
Case '0440'
Return 'Киргизский'
Case '0413', '0813'
Return 'Нидерландский'
Case '0409', '0809', '0c09', '1009', '1409', '1809', '1c09', '2009', '2409', '2809', '2c09', '3009', '3409'
Return 'Английский'
Case '040c', '080c', '0c0c', '100c', '140c', '180c'
Return 'Французский'
Case '0407', '0807', '0c07', '1007', '1407'
Return 'Немецкий'
Case '0410', '0810'
Return 'Итальянский'
Case '0414', '0814'
Return 'Норвежский'
Case '0416', '0816'
Return 'Португальский'
Case '040a', '080a', '0c0a', '100a', '140a', '180a', '1c0a', '200a', '240a', '280a', '2c0a', '300a', '340a', '380a', '3c0a', '400a', '440a', '480a', '4c0a', '500a'
Return 'Испанский'
Case '041d', '081d'
Return 'Шведский'
Case Else
Return 'Не удалось определить язык OS'
EndSwitch
EndFunc ;==>_Language