Есть ли более элегантный способ получить версию Internet Expolor с AutoIt?
Резюме:
Я ищу более элегантный способ получить версию Internet Explorer (IE) на компьютере с Windows (особенно с AutoIt, из-за скомпилированного *.exe). Мое текущее решение (см. Ниже) выполняет эту работу, но, может быть, есть лучший способ с использованием чисто функций AutoIt (UDF)?
Предпосылки и цель:
Я должен проверить для определенных версий IE и в целом для версий ниже 11 (11.0.9600).
Есть около 60 устройств (сервер, ноутбуки и т. Д.), Которые я должен проверить. Скомпилированный *.exe найдет версию и установит запись этой информации (помимо некоторых других, таких как имя хоста и т. Д.) В небольшой отчет HTML. Эта удаленная обработка и выполнение не проблема.
Код:
#include-once
#include <Array.au3>
Func _getFileProperties( $sDirectory, $sFileName, $bRemoveEmptyLines = True )
Local $oShellApp = ObjCreate( 'Shell.Application' )
Local $oFolder = $oShellApp.NameSpace( $sDirectory )
Local $oFolderItem = $oFolder.Parsename( $sFileName )
Local $aPropertyList[1][2] = [[1]]
For $i = 0 To 400 Step 1
If $oFolder.GetDetailsOf( $oFolder.Items, $i ) Then
ReDim $aPropertyList[$aPropertyList[0][0] + 1][2]
$aPropertyList[$aPropertyList[0][0]][0] = $oFolder.GetDetailsOf( $oFolder.Items, $i )
$aPropertyList[$aPropertyList[0][0]][1] = $oFolder.GetDetailsOf( $oFolderItem, $i )
$aPropertyList[0][0] += 1
EndIf
Next
_ArraySort( $aPropertyList, 0, 1, 0 )
If $bRemoveEmptyLines Then
For $i = $aPropertyList[0][0] - 1 To 1 Step - 1
If $aPropertyList[$i][1] == '' Then _ArrayDelete( $aPropertyList, $i )
Next
EndIf
$aPropertyList[0][0] = UBound( $aPropertyList, 1 ) - 1
Return $aPropertyList
EndFunc
Global $aPropertyList = _getFileProperties( @SystemDir, 'ieframe.dll' )
_ArrayDisplay( $aPropertyList )
Текущий результат:
Конечно, я буду фильтровать массив по моим критериям поиска (без проблем).
Ожидаемый результат:
По сути, это то же самое, что и выше (текущий результат), но, возможно, быстрее, а также с собственными / собственными функциями AutoIt? Потому что это всего лишь шаг из множества другой информации, которую я собираю, и я пытаюсь уменьшить код и улучшить читаемость для будущих правок.
Пожалуйста, обратите внимание, что я могу проверить _getFileProperties( @SystemDir, 'ieframe.dll' )
или для _getFileProperties( $sPathIe, 'iexplore.exe' )
,
Оба предоставляют информацию о версии.
Есть ли другой способ, более элегантный и собственный / родной функции AutoIt для достижения моей цели?
1 ответ
Вы можете попытаться проверить детали реестра, а также проверить версию IE. Надеюсь, это поможет вам найти его другим способом.
;Internet Explorer version is
Global $svcVersion = (RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "svcVersion"))
If $svcVersion <> "" Then
MsgBox(1, "internet Explorer Version" , "Internet Explorer version is: " & $svcVersion)
Endif
ИЛИ ЖЕ
;Internet Explorer updated version is
Global $svcUpdateVersion = (RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "svcUpdateVersion"))
If $svcUpdateVersion <> "" Then
MsgBox(1, "internet Explorer Version" , "Internet Explorer updated version is: " & $svcUpdateVersion)
Endif