Windows似乎失去了对.NET应用程序的追踪

时间:2010-02-25 17:07:25

标签: c# .net windows windows-installer

我们有一个.NET应用程序,我们通过MSI安装程序包分发给我们的用户。我们有每天早上运行的C ++应用程序,以查看用户的应用程序副本是否已过期,如果是,我们下载新的MSI并安装它。如果应用程序正在运行,我们需要将其关闭,以便我们可以执行更新。

我们的问题是,每隔一段时间,似乎Windows“失去”我们的应用程序。它不会报告进程正在运行 - 尽管它正在运行。它将允许我们覆盖甚至删除正在使用的可执行文件,而无需关闭应用程序。

也许这是常见的事情 - 但我们无法弄清楚发生了什么!有没有人对这种情况有任何了解?

似乎我们的应用程序的临时副本正在创建,程序正在从中运行。但如果是这样的话,为什么不一直发生呢?

编辑: 在我们的程序中,我们使用Platform SDK PSAPI.dll中的“EnumProcesses”函数来枚举所有正在运行的进程。

2 个答案:

答案 0 :(得分:2)

可能是脚本或应用程序作为64位程序运行,而另一个作为32位程序运行?如果是这样,那么在64位计算机上,更新检查可能会查找现有应用程序的错误位置,从而将其报告为丢失?

答案 1 :(得分:0)

您使用什么机制来检查进程是否正在运行?

尝试使用像process explorer这样的东西来查看可执行映像的加载路径 - 它应该在模块部分中列出。