Ottieni la data di installazione dal codice gestito
-
03-07-2019 - |
Domanda
Esiste un'API gestita per recuperare la data di installazione di un'applicazione utilizzando il GUID del prodotto?
Grazie. Scott
Soluzione
Il "corretto" modo per ottenere tali informazioni è utilizzare :: MsiGetProductInfo (). PInvoke dovrebbe essere banale.
Altri suggerimenti
Grazie Rob! Ho aggiunto un esempio C # completo di seguito.
[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);
}
Non conosco alcuna API che lo farà, ma potresti provare a leggere direttamente il valore dal registro. Controlla la seguente chiave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
InstallDate = 20081004
Vengono visualizzate le informazioni memorizzate sotto il tasto Disinstalla, ad es. nel Pannello di controllo - > Aggiungi o rimuovi programmi.
La chiave InstallDate nel registro non è sempre presente, specialmente quando il programma non è stato installato tramite MSI (come ad esempio Plugin Adobe Flash Player, DAEMON Tools, 7-ZIP, Picasa, TeamViewer, Mozilla Firefox ).
Un altro "corretto" il modo è quello di ottenere la data di creazione di alcuni file che conosci per " sicuro " viene aggiunto dall'installer. Nel mio caso è " unins000.exe " che è (ri) creato da Inno setup v5. Nessun PInvoke coinvolto, ma usa semplicemente le proprietà Exist e CreationTime di FileInfo!