我们有一个.NET应用程序,我们通过MSI安装程序包分发给我们的用户.我们有每天早上运行的C++应用程序,以查看用户的应用程序副本是否已过期,如果是,我们下载新的MSI并安装它.如果应用程序正在运行,我们需要将其关闭,以便我们可以执行更新.
我们的问题是,每隔一段时间,似乎Windows"失去"我们的应用程序.它不会报告进程正在运行 - 尽管它正在运行.它将允许我们覆盖甚至删除正在使用的可执行文件,而无需关闭应用程序.
也许这是常见的事情 - 但我们无法弄清楚发生了什么!有没有人对这种情况有任何见解?
看起来我们的应用程序的临时副本正在创建,程序正在从中运行.但如果是这样的话,为什么不一直这样呢?
编辑:在我们的程序中,我们使用Platform SDK PSAPI.dll中的"EnumProcesses"函数来枚举所有正在运行的进程.