繁体   English   中英

如何在NSIS安装程序中获取具有指定名称的所有进程

[英]How to get all the processes with a specified name in NSIS installer

我想杀死从我的安装目录启动的RunDll32进程。

所以如果我用

${nsProcess::KillProcess} "rundll32.exe" $R0

它杀死了我不想发生的系统上的所有rundll32进程。

IMO,我有两个解决方法:1.从命令行参数中识别感兴趣的进程。2.从进程启动目录(当前目录)中识别。

我看到很少有插件可以找到该过程,但是它们所做的只是返回找到或未找到。 相反,我需要进程的ID或这些进程的列表,然后我将检查每个进程的命令行或启动目录信息,并将对所需的进程进行操作。

顺便说一句,我检查了以下插件

http://nsis.sourceforge.net/FindProcDLL_plug-in

http://nsis.sourceforge.net/Processes_plug-in

http://forums.winamp.com/showthread.php?t=230998

谢谢

如果您控制.dll,那么最好的选择是提供某种方式以干净的方式关闭应用程序。 也许您可以根据其类名找到一个窗口,然后向其发送WM_CLOSE消息。

如果您只需要在升级/卸载过程中关闭应用程序,那么LockedList插件比杀死进程要好得多。

我通过使用wmic查询修复了如下问题:

StrCpy $1 "wmic Path win32_process where $\"name  like 'Rundll32.exe' and CommandLine like '%$0%'$\" Call Terminate"
nsExec::Exec $1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM