【发布时间】:2017-05-08 19:24:00
【问题描述】:
当我的 NSIS 安装程序正在执行时,我需要能够在后台查找另一个正在运行的进程。在完成新的安装程序之前,必须终止并卸载此其他进程。
我尝试使用 FindProc 插件来查找进程,并尝试使用 KillProc 插件来终止进程。这些插件中的每一个都不会返回任何结果。
FindProcDLL::FindProc "MyApplication.exe"
KillProcDLL::KillProc "MyApplication.exe"
我也试过nsProcess插件,还是不行。
nsProcess::_KillProcess "MyApplication.exe" $R0
似乎人们在使用这些插件方面取得了成功,但我不知道为什么它在我的场景中不起作用,除非它与后台进程有关。
任何帮助将不胜感激。
【问题讨论】:
-
这个应用程序有什么特别之处吗? 64位?以其他用户身份运行?服务?
-
这是一个 32 位应用程序。它以试图删除它的同一用户身份运行。它是在系统托盘中运行的 WPF 应用程序,因此可能不存在物理窗口。
-
如果它有一个托盘图标,它必须有一个窗口,但它应该与插件无关。它是否适用于 Notepad.exe 等其他应用程序?
-
使用 nsProcess::_KillProcess "Notepad.exe" $R0 不起作用。我还在 MessageBox 中输出 $R0 的值,而 $R0 的值是空的,因为没有任何值。
-
当一个插件作为这样的参数提供时,它不能写入寄存器。