Où la fonction Ajout / Suppression de programmes extrait-t-elle les données de la colonne “Installé sur”?

Je travaille sur la réplication de l’applet de suppression de programmes Windows 7/8 avec VBScript. J’ai obtenu le script pour inclure toutes les entrées correctes, mais je n’ai pas pu le faire inclure toutes les informations supplémentaires correctes affichées par Windows.

Par exemple, Windows affiche la colonne “Installé sur” avec une date. Dans certains cas, il les récupère à partir des clés de registre pertinentes, telles que:

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate HKUS\USER - SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate 

Très peu de clés ont la valeur InstallDate et Windows a toujours cette colonne remplie. J’ai réussi à saisir la majorité des dates manquantes de WMI:

  ("SELECT * FROM Win32_Product Where Description = " & "'" & strName & "'" & "") for each objSoftware in colSoftware Date = objSoftware.InstallDate 

Cela ne donne que les dates des applications MSI installées.

Je pensais peut-être que Windows “devinait” les dates basées sur les dates du fichier Program Files / ProgramData, mais j’ai essayé de les modifier manuellement et cela ne se reflète pas dans Ajouter / Supprimer. J’essaie de comprendre comment Windows tire cette date. J’ai remarqué que CCleaner peut reproduire des add / remove sans erreur, donc cette information est disponible quelque part. Je viens de m’épuiser à le chercher.

Après de nombreuses erreurs, j’ai déterminé que la fonction Ajout / Suppression de Windows se voyait atsortingbuer la date «Installé le» d’au moins trois emplacements potentiels:

  • Pour les applications MSI installées, il obtient la date de WIN32_Product (de loin la méthode la plus courante)

  • Pour les applications non MSI, il recherche la valeur InstallDate dans la clé de désinstallation du registre correspondante (exemple: HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Désinstaller \ Google Chrome)

  • Pour les applications non MSI qui ne disposent pas de la méthode InstallDate, Windows recherche la date à laquelle la clé de désinstallation a été écrite et utilise cette date pour “Installé sur”.

C’était cette dernière méthode qui me laissait perplexe pendant si longtemps. Cela signifie que chaque fois qu’un programme non MSI manquant la valeur InstallDate est mis à jour et que le numéro de version de la clé de désinstallation est modifié, vous remarquerez que la date d’installation est également mise à jour et donne l’apparence de ce programme. juste été installé.

Exemple: HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Désinstaller \ Adobe Flash Player Plugin

Si l’installation de votre plug-in Flash Player n’était pas basée sur MSI, vous pouvez accéder à cette clé et modifier la version 11.8.800.94 à 11.8.800.93 et ​​votre Ajouter / Supprimer changera la date d’installation sur Aujourd’hui.