簡體   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