Obtenir la date d'installation à partir du code géré
-
03-07-2019 - |
Question
Existe-t-il une API gérée permettant de récupérer la date d'installation d'une application à l'aide du GUID du produit?
Merci. Scott
La solution
Le "bon" " moyen d’obtenir cette information est d’utiliser :: MsiGetProductInfo (). PInvoke devrait être trivial.
Autres conseils
Merci Rob! J'ai ajouté un exemple complet en C # ci-dessous.
[DllImport("msi.dll", CharSet = CharSet.Unicode)]
static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len);
static void Main(string[] args)
{
Int32 len = 512;
var builder = new StringBuilder(len);
MsiGetProductInfo("{0db93d2f-a9e7-417f-9425-5e61e82c0868}", "InstallDate", builder, ref len);
var installDate = DateTime.ParseExact(builder.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture);
Console.WriteLine(installDate);
}
Je ne connais aucune API qui puisse le faire, mais vous pouvez essayer de lire la valeur directement dans le registre. Vérifiez la clé suivante:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
InstallDate = 20081004
Les informations stockées sous la clé de désinstallation sont affichées, par exemple. dans le Panneau de configuration - > Ajouter ou supprimer des programmes.
La clé InstallDate du registre n’est pas toujours présente, en particulier lorsque le programme n’a pas été installé avec MSI (par exemple, plug-in Adobe Flash Player, Outils DAEMON, 7-ZIP, Picasa, TeamViewer, Mozilla Firefox ).
Un autre "bon" Pour cela, vous devez obtenir la date de création d’un fichier que vous connaissez déjà. est ajouté par l'installateur. Dans mon cas, il s'agit de "unins000.exe". qui est (re) créé par Inno setup v5. Aucun PInvoke n'est impliqué, mais utilisez simplement les propriétés Exists et CreationTime de FileInfo!