Obtenga la fecha de instalación del código administrado
-
03-07-2019 - |
Pregunta
¿Existe una API administrada para recuperar la fecha de instalación de una aplicación usando el GUID del producto?
Gracias. Scott
Solución
El " propio " La forma de obtener esa información es usar :: MsiGetProductInfo (). El anuncio debe ser trivial.
Otros consejos
Gracias Rob! He añadido un ejemplo completo de C # a continuación.
[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);
}
No conozco ninguna API que lo haga, pero puedes intentar leer el valor directamente del Registro. Compruebe la siguiente clave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
InstallDate = 20081004
La información almacenada en la clave de desinstalación se muestra, por ejemplo, en el Panel de control - > Añadir o eliminar programas.
La clave InstallDate en el registro no siempre está allí, especialmente cuando el programa no se ha instalado a través de MSI (como por ejemplo Adobe Flash Player Plugin, herramientas DAEMON, 7-ZIP, Picasa, TeamViewer, Mozilla Firefox ).
Otro " propio " La forma es obtener la fecha de creación de algún archivo que sepa que " seguro " es agregado por el instalador. En mi caso es " unins000.exe " que es (re) creado por Inno setup v5. No interviene PInvoke, sino que simplemente utiliza las propiedades de FileInfo Exists y CreationTime.