我可以以某种方式检测使用 .Net 或 Win32 api 或任何其他方式安装程序的时间吗?
问问题
1349 次
2 回答
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"));
}
}
}
您可以使用所有这些字段
有关更多信息,请参阅此答案。
您可以通过使用 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);
于 2013-04-05T09:54:43.640 回答
1
您必须在注册表中找到它。
这就是为什么它不是关于.NET
或WinAPI
。
例如:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
显示自 1970年 1 月 1 日Windows
以来的安装时间(以秒为单位)
于 2013-04-05T09:52:59.867 回答