Получить дату установки из управляемого кода - PullRequest
7 голосов
/ 06 января 2009

Существует ли управляемый API для получения даты установки приложения с использованием GUID продукта?

Спасибо. Скотт

Ответы [ 5 ]

10 голосов
/ 06 января 2009

Спасибо, Роб! Я добавил полный пример C # ниже.

    [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);
    }
8 голосов
/ 06 января 2009

«Правильный» способ получить эту информацию - использовать :: MsiGetProductInfo (). PInvoke должен быть тривиальным.

1 голос
/ 06 января 2009

Я не знаю ни о каком API, который будет это делать, но вы можете попытаться прочитать значение непосредственно из Реестра. Проверьте следующий ключ:

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

Отображается информация, хранящаяся под ключом удаления, например, в панели управления -> Установка и удаление программ.

0 голосов
/ 27 января 2016

Другой «правильный» способ - получить дату создания файла, который, как вы знаете, «уверен» добавлен установщиком. В моем случае это "unins000.exe", который (пере) создан Inno setup v5. PInvoke не используется, просто используйте свойства FileInfo Exists и CreationTime!

0 голосов
/ 05 апреля 2013

Ключ InstallDate в реестре присутствует не всегда, особенно когда программа не была установлена ​​с помощью MSI (например, Плагин Adobe Flash Player, DAEMON Tools, 7-ZIP, Picasa, TeamViewer, Mozilla Firefox ).

...