摘要:
我在寻找一个更优雅的方式来获得一个Windows计算机上的Internet Explorer(IE)版本(尤其是AutoIt的,因为编译后的* .EXE的)。我目前的解决方案(如下所示)做的工作,但也许有纯的AutoIt功能(S)(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 )
目前的结果:
当然,我会筛选我的搜索标准阵列(没问题)。
预期结果:
是basicly同上(当前结果),但可能以更快的方式,也有自己的AutoIt /本地函数(S)?因为它的许多其他信息只是一个步骤,将收集和我尽量减少代码,旨在提高未来编辑位点的可读性。
请注意,我可以检查
_getFileProperties( @SystemDir, 'ieframe.dll' )
or为
_getFileProperties( $sPathIe, 'iexplore.exe' )
。
无论做提供的版本信息。
是否有其他的方式,更优雅和自己的AutoIt /本地函数来实现我的目标?
你可以尝试检查注册表中的细节,以及验证IE version.Hope这可能会帮助你找到它的其他方式。
;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