【问题标题】:Process being killed by a third party application (Sprint Smartview)进程被第三方应用程序杀死(Sprint Smartview)
【发布时间】:2012-02-22 17:23:34
【问题描述】:

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

我想不出为什么我们的软件和他们的软件之间会有任何交互。我们的软件无法访问网络,并且在任何情况下都没有插入宽带调制解调器。

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

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

我的问题是,我如何调查 Win32 进程是如何/为什么被杀死的,我可以做些什么来防止它发生?

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

编辑:为了帮助罕见的其他开发人员:如果您的可执行文件名为phoenix.exe 并且您的最终用户正在运行 Sprint SmartView,这就是您的程序随机死亡的原因。重命名你的可执行文件将解决这个问题(或者花费你生命中的几个月试图找出在 Sprint 通知谁来真正解决这个问题)。具体提到phoenix.exe的文件是WwanCoreSdk.dll

【问题讨论】:

  • 如果“连宽带调制解调器都没有插入”,你不能卸载驱动程序,然后告诉它的作者他们有问题吗?
  • @tomfumb : 从客户的计算机上卸载驱动程序?我当然希望不会!
  • @ildjarn 请在发表评论之前花点时间阅读 - “让他们这样做”很清楚
  • @ildjarn:“从你不拥有的计算机上删除软件是不道德的”——我似乎每次拜访我父亲时都必须这样做……;)
  • 显然是的,这就是链接。你能告诉我们被杀死的 EXE 的名字是什么,所以我们不能这样称呼我们吗? :-)

标签: c++ windows winapi process kill


【解决方案1】:

不幸的是,

进程不能阻止自己被终止。

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

【讨论】:

  • 这个答案似乎既正确又富有哲理。
  • 我认为对于防止进程被杀死没有任何争论。我的印象是 OP 只是想找出是谁在做的。
  • @Kerrek SB:我的回答是对 OP 的问题“......我能做些什么来防止它发生?”,即什么都没有。
  • 告诉最后一个感染我系统的病毒。
【解决方案2】:

如果您的应用是 32 位的,请尝试查看 WinAPIOverride32。它将向您显示程序完成的所有系统调用,因此如果您能够在上述管理器的日志中正确地杀死您的程序,它应该更容易解释它发生的原因。

【讨论】:

  • 好主意。如果我不知道的话,我接下来会尝试这个。
  • 我会接受这一点,因为(即使我是凭直觉想出来的)它很可能会引导我走上正确的道路来弄清楚发生了什么。
  • 嗯,谁只是杀死任何名为 'phoenix.exe' 的进程而不检查它是否是您想要杀死的?在终止之前至少应该进行一些可执行路径测试。我什至认为重命名 exefile 可能会有所帮助,但后来我想“来吧,谁会如此愚蠢地制作这样一个狂暴的应用程序?” ;)
猜你喜欢
  • 2012-04-05
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
相关资源
最近更新 更多