- Сообщения
- 7,790
- Репутация
- 2,322
inververs [?]
Мне кажется, что msinfo32.exe выдает только информацию о версии файла, какой конкретно файл используется, ИМХО, это другой вопрос. А все версии файлов hal*.dll (у меня) одинаковые. В принципе, это можно проверить.Странный конечно у вас способ поиска.Первым всегда будет находится hal.dll, но это не факт что система использует именно его, это только показывает, что файл такой есть.
Код:
ConsoleWrite('Hal Version: ' & @LF & _Get_Hal_Version_All() & @LF)
ConsoleWrite('---' & @LF)
ConsoleWrite('Hal Version WMI: ' & @LF & _Get_Hal_VersionWMI_All() & @LF)
Func _Get_Hal_VersionWMI_All()
Local $o_WMI, $o_Items, $o_Tmp, $s_Version
$o_WMI = ObjGet('winmgmts:\\localhost\root\CIMV2')
If @error Then Return SetError(-1, 0, -1)
$o_Items = $o_WMI.ExecQuery('SELECT Version,FileName FROM CIM_DataFile WHERE Drive="C:" AND Path="\\Windows\\System32\\" AND FileName Like "hal%" AND Extension="dll"', 'WQL', 0x30)
If Not IsObj($o_Items) Then Return 'Not available'
For $o_Tmp In $o_Items
$s_Version &= Execute('StringFormat("%-15s%-15s\n", $o_Tmp.FileName & ".dll", $o_Tmp.Version)')
Next
Return $s_Version
EndFunc ;==>_Get_Hal_VersionWMI
Func _Get_Hal_Version_All()
Local $h_Search, $s_File, $s_Version
$h_Search = FileFindFirstFile(@SystemDir & '\hal*.dll')
If $h_Search = -1 Then Return 'Not available'
While 1
$s_File = FileFindNextFile($h_Search)
If @error Then ExitLoop
$s_Version &= StringFormat('%-15s%-15s\n', $s_File, FileGetVersion(@SystemDir & '\' & $s_File))
WEnd
FileClose($h_Search)
Return $s_Version
EndFunc ;==>_Get_Hal_Version