Un petit truc que j'ai fait pour le fun:
ça liste les programmes installés, avec leurs chaînes de désinstallation, et de désinstallation silencieuse:
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
$result = _ListUninstallEntries()
_ArrayDisplay($result)
Func _ListUninstallEntries($sName = "", $iOnlySillent = 0)
Local $ret[1][3] = [[0, "", ""]]
; ---
__ListUninstallEntries_ProcessRegKey($ret, "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $sName, $iOnlySillent)
__ListUninstallEntries_ProcessRegKey($ret, "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $sName, $iOnlySillent)
; ---
If $ret[0][0] = 0 Then $ret = ""
Return $ret
EndFunc
Func __ListUninstallEntries_ProcessRegKey(ByRef $ret, $RegKey, $sName, $iOnlySillent)
Local $count = 0, $key, $name, $cmd, $scmd
While 1
$count += 1
$key = RegEnumKey($RegKey, $count)
If @error Then ExitLoop
; ---
$name = RegRead($RegKey & "\" & $key, "DisplayName")
If Not $name Then ContinueLoop
$cmd = RegRead($RegKey & "\" & $key, "UninstallString")
$scmd = RegRead($RegKey & "\" & $key, "QuietUninstallString")
; ---
If (Not $iOnlySillent Or ($iOnlySillent And $scmd)) And (Not $sName Or ($sName And StringInStr($name, $sName))) Then
__ListUninstallEntries_AddResult($ret, $name, $cmd, $scmd)
EndIf
WEnd
EndFunc
Func __ListUninstallEntries_AddResult(ByRef $ret, $name, $cmd, $scmd)
ReDim $ret[$ret[0][0] + 2][3]
$ret[0][0] += 1
$ret[$ret[0][0]][0] = $name
$ret[$ret[0][0]][1] = $cmd
$ret[$ret[0][0]][2] = $scmd
EndFunc