检测程序安装的时间

Eug*_*ene -1 .net registry winapi

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

1Ma*_*yur 5

这将得到安装的日期,我不确定你可以得到时间

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"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以使用所有这些领域

注册表项

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

您可以通过使用Windows Installer API获得时间!要使用的函数是MsiGetProductInfo,属性名称是INSTALLPROPERTY_INSTALLDATE,但WMI是重量级的.

这里是这个属性取自更多信息点击这里

INSTALLPROPERTY_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);
Run Code Online (Sandbox Code Playgroud)