Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows似乎失去了对.NET应用程序的跟踪_C#_.net_Windows_Windows Installer - Fatal编程技术网

C# Windows似乎失去了对.NET应用程序的跟踪

C# Windows似乎失去了对.NET应用程序的跟踪,c#,.net,windows,windows-installer,C#,.net,Windows,Windows Installer,我们有一个.NET应用程序,通过MSI安装程序包分发给用户。我们有C++应用程序,每天早上运行,看看用户的应用程序副本是否过时了,如果是这样,我们将拆除新的MSI并安装它。如果应用程序正在运行,我们需要将其取下,以便执行更新 我们的问题是,windows似乎每隔一段时间就会“丢失”我们的应用程序。它不会报告进程正在运行——尽管它正在运行。它允许我们在不关闭应用程序的情况下覆盖甚至删除正在使用的可执行文件 也许这是很常见的事情,但我们不知道发生了什么!有人了解这种情况吗 看起来我们的应用程序正在创

我们有一个.NET应用程序,通过MSI安装程序包分发给用户。我们有C++应用程序,每天早上运行,看看用户的应用程序副本是否过时了,如果是这样,我们将拆除新的MSI并安装它。如果应用程序正在运行,我们需要将其取下,以便执行更新

我们的问题是,windows似乎每隔一段时间就会“丢失”我们的应用程序。它不会报告进程正在运行——尽管它正在运行。它允许我们在不关闭应用程序的情况下覆盖甚至删除正在使用的可执行文件

也许这是很常见的事情,但我们不知道发生了什么!有人了解这种情况吗

看起来我们的应用程序正在创建一个临时副本,程序正在从中运行。但如果是这样的话,为什么不一直这样

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

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

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


尝试使用process explorer之类的工具查看加载可执行映像的路径-它应该列在模块部分。

您使用什么来检测应用程序是否正在运行?表示应用程序未运行并允许覆盖可执行文件?对此有一个简单的解释:它没有运行。我不知道你的应用程序是做什么的,但听起来ClickOnce确实是一个更干净的解决方案。在应用程序关闭时所有线程都被正确释放了吗?我希望“它没有运行”是解决方案;)但是,我将继续使用该应用程序。任务管理器说它正在运行,但脚本没有。对我来说,比不检测更奇怪的是,我可以在继续使用应用程序的同时覆盖可执行文件。让我看看我能不能把剧本挖出来看看,这看起来很有希望。。应用程序是32位的,还不确定更新脚本。但是,这是否也能解释为什么能够覆盖可执行文件?事实证明并非如此,但感谢您的建议。有关进程枚举机制,请参阅我原始问题中的编辑。我没有想过使用process explorer,但这是一个好主意。不幸的是,我们无法按需重新创建此功能,但当它再次出现时,我会记住这一点。