0

有没有办法(在 C# 中,使用 WMI 类)来找出特定软件已安装和卸载了多少次?

我想在远程计算机上运行它。我通过以下代码获取软件列表:

ManagementScope scope = new ManagementScope(@"\\" + ipAddress + @"\root\cimv2");
ObjectQuery query = new ObjectQuery("Select * from  Win32_Product");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject m in queryCollection)
{
    Console.Write(m["Caption"]+"\t");
    Console.WriteLine(m["installDate"]);
}
4

1 回答 1

1

通常不会。

当一个程序将被卸载时,程序的每一部分都应该从机器上删除,就像它从来都不是他们的一样。不幸的是,在这一点上,几乎每个程序都不能完美地完成工作,从而在机器上留下了一些伪影。

尽管如此,理想的行为是卸载后一切都消失了(包括某种计数器),因此只能检查当前是否安装了程序。

在另一个站点上,没有任何东西允许程序将某个计数器(例如注册表)保存在某个地方,每次安装启动时都会增加,但这是每个程序特定的东西,并且不存在该计数器应该驻留的通用机制。

于 2012-08-06T11:57:07.190 回答