.net 检测程序安装的时间

.net 检测程序安装的时间,.net,winapi,registry,.net,Winapi,Registry,我是否可以用.Net或Win32 api或任何其他方式检测程序安装的时间?您必须在注册表中找到它 这就是为什么它不是关于.NET或WinAPI 例如: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 显示自1970年1月1日以来窗口的iInstallation time(以秒为单位)这将获得安装日期,我不确定您是否可以获得时间 string registry_key = @"SOFTWARE\Microsoft\Win

我是否可以用.Net或Win32 api或任何其他方式检测程序安装的时间?

您必须在注册表中找到它

这就是为什么它不是关于
.NET
WinAPI

例如:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate

显示自1970年1月1日以来
窗口的iInstallation time(以秒为单位)

这将获得安装日期,我不确定您是否可以获得时间

string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
    foreach(string subkey_name in key.GetSubKeyNames())
    {
        using(RegistryKey subkey = key.OpenSubKey(subkey_name))
        {
            Console.WriteLine(subkey.GetValue("DisplayName"));
            Console.WriteLine(subkey.GetValue("InstallDate"));
        }
    }
}
您可以使用所有这些字段

有关更多信息,请参阅答案

您可以通过使用Windows Installer API获得时间! 要使用的函数为,属性名称为INSTALLPROPERTY\u INSTALLDATE,但WMI是重量级的

以下是有关此属性的更多信息,这些信息来自

INSTALLPROPERTY\u INSTALLDATE:此产品上次接受服务的时间。每次从产品中应用或删除修补程序或使用/v命令行选项修复产品时,都会替换此属性的值。如果该产品未收到任何维修或修补程序,则此属性包含该产品在此计算机上安装的时间

示例:

[DllImport("msi.dll", CharSet=CharSet.Unicode)]
static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len);

Int32 len = 512;
System.Text.StringBuilder builder = new System.Text.StringBuilder(len);
MsiGetProductInfo("{4B3334CE-06D9-4446-BBC5-EB4C9D75BFF6}", "INSTALLPROPERTY_INSTALLDATE", builder , ref len);