- Offizieller Beitrag
Mit dieser Funktion kann man von diversen Programmen die installierte Version aus der Registry auslesen.
Spoiler anzeigen
#include <Array.au3>
;~ _GetSoftwareVersion_DisplayIni()
$sVersion = _GetSoftwareVersion('firefox')
ConsoleWrite('Error: ' & @error & @CR)
MsgBox(0, 'Version', $sVersion)
Func _GetSoftwareVersion($sSoftware)
Local $sRegKey, $sVersion, $sInifile, $sTmp, $aSoftware
$sInifile = @ScriptDir & '\_GetSoftwareVersion.ini'
If @OSArch = 'X86' Then
$sRegKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\'
Else
$sRegKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\'
EndIf
$aSoftware = IniReadSectionNames($sInifile)
If @error Then Return SetError(1, 0, 'no Inifile')
For $i = 1 To $aSoftware[0]
If $aSoftware[$i] = $sSoftware Then
$sRegKey &= IniRead($sInifile, $aSoftware[$i], 'RegKey', '')
$sTmp = IniRead($sInifile, $aSoftware[$i], 'Version', '')
If StringLeft($sTmp, 3) = 'Reg' Then $sVersion = Execute($sTmp)
Return $sVersion
EndIf
Next
Return SetError(2, 0, 'not found')
EndFunc
Func _GetSoftwareVersion_DisplayIni()
Local $sInifile, $aSoftware
$sInifile = @ScriptDir & '\_GetSoftwareVersion.ini'
$aSoftware = IniReadSectionNames($sInifile)
If @error Then Return SetError(1, 0, 'no Inifile')
Local $aRegKey[$aSoftware[0] + 1][3] = [[$aSoftware[0], 0, 0]]
For $i = 1 To $aSoftware[0]
$aRegKey[$i][0] = $aSoftware[$i]
$aRegKey[$i][1] = IniRead($sInifile, $aSoftware[$i], 'RegKey', '')
$aRegKey[$i][2] = IniRead($sInifile, $aSoftware[$i], 'Version', '')
Next
_ArrayDisplay($aRegKey)
EndFunc
Außerdem wird die folgende Inidatei benötigt:
Spoiler anzeigen
[AdobeReader]
RegKey="Adobe\Acrobat Reader"
Version="RegEnumKey($sRegKey, 1)"
[Avira AntiVir]
RegKey="Avira\AntiVir Desktop"
Version="RegRead($sRegKey, 'EngineVersion')"
[AutoIt]
RegKey="AutoIt v3\AutoIt"
Version="RegRead($sRegKey, 'Version')"
[AutoIt Beta]
RegKey="AutoIt v3\AutoIt"
Version="RegRead($sRegKey, 'betaVersion')"
[Corel DVDCopy]
RegKey="Corel\DVDCopy6"
Version="RegRead($sRegKey, 'Version')"
[DirectX]
RegKey="Microsoft\DirectX"
Version="RegRead($sRegKey, 'Version')"
[DYMO LabelWriter]
RegKey="DYMO\LabelWriter"
Version="RegRead($sRegKey, 'SoftwareVersion')"
[FlashPlayer]
RegKey="Macromedia\FlashPlayer"
Version="RegRead($sRegKey, 'CurrentVersion')"
[JRE]
RegKey="JavaSoft\Java Runtime Environment"
Version="RegRead($sRegKey, 'CurrentVersion')"
[Firefox]
RegKey="Mozilla\Mozilla Firefox"
Version="RegRead($sRegKey, 'CurrentVersion')"
[Thunderbird]
RegKey="Mozilla\Mozilla Thunderbird"
Version="RegRead($sRegKey, 'CurrentVersion')"
[PowerDVD]
RegKey="CyberLink\PowerDVD"
Version="RegRead($sRegKey, 'CLVer')"
[VLC]
RegKey="VideoLAN\VLC"
Version="RegRead($sRegKey, 'Version')"
[WMPlayer]
RegKey="Microsoft\MediaPlayer\PlayerUpgrade"
Version="RegRead($sRegKey, 'PlayerVersion')"
Alles anzeigen
Die Inidatei muss sich im Scriptverzeichnis befinden!
Auf diese Weise läßt sich die Funktionalität einfacher erweitern. Man muss nur die Inidatei anpassen.
Die zweite Funktion "_GetSoftwareVersion_DisplayIni()" dient nur dazu, sich den Inhalt der Inidatei anzeigen zu lassen.