NSIS:强制结束软件进程

原文NSIS:强制结束软件进程

有时候,我们选择卸载软件后发现安装目录中的主文件依然存在,不是我们卸载代码写的不对,而是卸载的时候软件根本就没有关闭!

在卸载前加上下面这个宏可以在一定程度上免除上述的尴尬,不信,你就试试!
 

轻狂注: 本宏可用于删除程序前使用!判断用户的程序是否仍在运行,如果运行,就将其进程结束,再删除程序。

代码如下:
 

01 outfile "test.exe"    ;www.flighty.cn
02 var exestr            ;可以是多个进程名,用";"号断开
03 var len1
04 var len2
05 var leni
06 Var len
07 var sun
08 var len3
09 var len4
10 !macro ExeEnd  exestr
11    strlen $sun "${exestr}"
12    intop $len3 0 + 0
13    intop $len4 0 + 0
14    intop $len 0 + 0
15    intop $leni 0 + 0
16    strcmp $sun 0 +12 0                    ;是否到了字符串的尾端!
17    IntOp $leni $leni + 1                  ;截取字符的长度增加!
18    StrCpy $len1 "${exestr}" $leni $len3   ;截取字符,并保存与len1中
19    StrCpy $len2 "$len1" "" -1             ;取出Len1最后一个字符放入Len2中
20    Strcmp $len2 ";" 0 +9                  ;判断Len2中的字符是不是";"如果是,表示这以经是一个进程名了!如果不是,刚跳过下面的宏,继续取!             
21    strcpy $len $len1 -1
22    FindProcDLL::FindProc "$len" ;查找进程是否存在!
23    StrCmp $R0 1 0 +2
24    KillProcDLL::KillProc "$len" ;杀掉进程,此处应注意,不是所有程序的进程都能杀掉,有些进程用这个方法无法结束!
25    intop $leni 0 + 0
26    strlen $len4 "$len1" 
27    intop $len3 $len3 + $len4
28    strcpy $len1 "" 
29    IntOp $sun $sun - 1     ;字符串长度减1
30    strcmp $sun 0 0 -13     ;此处判断字条串长度如果为0则到了尾端了!
31    ;杀掉最后一个进程文件!
32    FindProcDLL::FindProc "$len1" ;查找譔进程是否存在!
33    StrCmp $R0 1 0 +2
34    KillProcDLL::KillProc "$len1" ;杀掉进程,此处应注意,不是所有程序的进程都能杀掉,有些进程用这个方法无法结束!
35 !macroend
36 Section
37 !insertmacro ExeEnd"cmd.exe;2.exe;3.exe;4.exe;5.exe;6.exe;hh.exe;hfkjc.exe"  ;这是你要结束的进程
38 sectionend
时间: 2024-09-23 21:53:02

NSIS:强制结束软件进程的相关文章

电脑任务管理器强制结束一些进程失败的解决方法

  1.单击开始菜单,在搜索框内输入"CMD";   2.按回车,打开命令提示符窗口; 3.在命令提示符窗口中输入:tasklist;   4.按回车,就会显示出当前运行的程序; 5.输入"Tskill+进程名",即可结束进程; 6.这样就可以结束任务管理器无法结束的进程; 7.记住,只要输入进程名,不用输入扩展名; 8.不要关闭System.SMSS.EXE和CSRSS.EXE进程. 电脑任务管理器强制结束一些进程失败的解决方法介绍到这里,下次遇到相同问题的时候可

删除EM,强制结束EM进程后,启动数据库ORA-00119,ORA-00132报错的解决方法_oracle

通过emca -deconfig dbcontrol db -repos drop命令删除EM资料库时,很长时间没有删除完成,期间数据库连接数暴涨,达到数据库最大连接数,结果前台及后台均连接不上数据库.强制杀死EM及应用相关进程,关闭数据库后,重启数据库时报:ORA-00119,ORA-00132错误. SQL> startup; ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syn

强制结束指定Windows Vista进程

一般情况下,我们在需要结束某个进程往往会选择右键任务栏 - 任务管理器 - 右键某进程 - 结束的方式来进行.但其实我们还可以通过命令来对此操作进行更多的选项. 首先, * 开始菜单- 程序 - 附件 - 命令提示符 * 右键 - 以管理员身份运行 * 输入tasklist,出现如下列表: Image Name PID Session Name Mem Usage ========================= ======== ================ ============ s

如何强制结束进程命令

  1.ntsd强制结束命令 其实我只需要通过两个命令来强制性的结束这些进程,第一个命令就是ntsd命令,先要找到你的PID值,这个PID值是在任务管理器上面可以查看的到,在任务管理器上线点击"查看--选择列"在弹出的选择进程页列窗口上面将PID前面的勾选起来即可看到你的进程PID值. 现在在点击开始菜单中的"运行"--在运行输入框上面输入"cmd"命令,执行该命令即可进入到windows dos状态下.然后在上面输入[ntsd -c q -p

win7下强制结束进程命令

如果查看8080端口是否被占用: netstat -ano | findstr "8080" 如果1668被占用了. tasklist | findstr "1668" 杀死他 taskkill /im Tomcat6.exe /f win7下强制结束进程命令    命令:tasklist 作用:显示当前正在运行的任务   命令:taskkill 作用:结束某任务   用法:同时按键windows+R --cmd--cd c:/windows/system32--t

NSIS:制作软件升级安装包

原文 NSIS:制作软件升级安装包 相信不是每个人写的软件都只发布一次就可以了,肯定要有修改和维护的情况发生.在这种情况下,您可能就需要一个软件的升级安装包了.   现在,我们就来一步步把这个安装包做出来.   前提:用户已经使用我们的完整安装包安装过了,且已经在注册表中记录了安装路径.   1 ;在注册表中写入安装路径 2 WriteRegStr HKCU "Software\轻狂的软件" "" $INSTDIR   我们要实现以下功能: 1.运行时检测注册表中是

在win form 程序中,如何知道自己被别的程序强制结束了?谢谢!!!

问题描述 在winform程序中,如何知道自己被别的程序强制结束了?谢谢!!!或是别的进程或用户用任务管理器把自己结束了,因为我想在程序终止前做一些操作(作记录身末的) 解决方案 解决方案二:终止进程还可以触发事件吗?那木马就麻烦了..你结束我之前我先把你给结束了..哈哈..

系统-像百度,360杀毒软件那样的无法被结束的进程是如何做到的,如何关闭?

问题描述 像百度,360杀毒软件那样的无法被结束的进程是如何做到的,如何关闭? 今天因为百度杀毒的一个bddownloader.exe的进程把tomcat的端口占用了,然后被我查出来,想要关闭这个进程却不能关闭,就想要了解这一块的问题.求大神help 解决方案 直接卸载,换一个吧!不然的话, 解决方案二: API hook防止被结束 驱动保护

mac如何强制去除软件运行时占Dock栏图标

  苹果电脑 Mac OS X 系统下,通过修改 plist 文件,强制让某个软件运行时不在 Dock 上显示图标浪费位置的方法. 首先,command + Q 彻底退出想 "修理" 的软件,这里以有道词典为例.进入 Finder,右击该软件图标,选择 "显示包内容" 在 Contents 文件夹里,找到 Info.plist 文件,双击打开.要是弹出已锁定什么的警告,就点解锁.再不行去上级文件夹改读写权限(记得办完事改回来) 去除软件运行时占Dock栏图标 如上图