进程被第三方应用程序杀死(Sprint Smartview)

时间:2012-01-30 22:44:21

标签: c++ windows winapi process kill

最近,来自同一家公司的两位软件用户开始体验随机关闭(没有错误消息,崩溃对话框,退出对话框等)。我们能够将这两个系统的共同点分离到特定的软件(移动宽带设备管理器)。当该软件运行时,我们的软件会在约2分钟的时间内随机关闭。如果我们退出宽带管理器,我们的软件将无限期地运行而不会出现问题。

我无法想到为什么我们的软件和他们的软件之间会有任何互动。我们的软件无法访问网络,无论如何都没有插入宽带调制解调器。

我们为客户提供了一个解决方案(以管理员身份运行我们的软件或在运行我们的软件之前退出移动宽带管理器)但我们希望解决问题,这样他们就不必担心这些事情中的任何一个。

我在我们的软件上附加了一个远程调试器,但我不太确定在哪里查看我们的软件究竟是如何死亡的。当我们的流程结束时,调试只以退出代码0结束。

我的问题是,如何调查Win32进程如何/为何被杀,以及如何防止它发生?

编辑:我在十六进制编辑器中打开了宽带管理器及其使用的DLL,并引用了一个与我们完全相同的可执行文件。所以我猜这就是链接。重命名我们的可执行文件可以解决我们用户的问题,但不幸的是,Sprint SmartView的愚蠢。

编辑:为了帮助罕见的其他开发人员点击:如果您的可执行文件名为phoenix.exe且您的最终用户正在运行Sprint SmartView,那么这就是您的程序随机死亡的原因。重命名您的可执行文件将解决此问题(或者花费几个月的时间来确定在Sprint中通知谁以使其真正得到解决)。提及phoenix.exe的文件具体为WwanCoreSdk.dll

2 个答案:

答案 0 :(得分:3)

不幸的是,

  

进程无法阻止自身被终止。

http://msdn.microsoft.com/en-us/library/ms686714%28VS.85%29.aspx

答案 1 :(得分:1)

如果您的应用是32位,请尝试查看WinAPIOverride32。它将显示程序完成的所有系统调用,因此如果您能够在提交的管理器的日志中正确地删除程序,则应该更容易解释它为什么会发生。