tags:

views:

577

answers:

3

Is there a managed API to retrieve an application's install date using the Product GUID?

Thanks. Scott

A: 

Hi Scott,

I don't know about any API which will do that, but you could try to read the value from the Registry directly. Check the following key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
    InstallDate = 20081004

The information stored under the Uninstall key is displayed e.g. in Control Panel -> Add or Remove Programs.

0xA3
+2  A: 

The "proper" way to get to that information is to use ::MsiGetProductInfo(). PInvoke should be trivial.

Rob Mensching
+1  A: 

Thanks Rob! I've added a complete C# example below.

    [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);
    }