Domanda

Esiste un'API gestita per recuperare la data di installazione di un'applicazione utilizzando il GUID del prodotto?

Grazie. Scott

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top