NSIS:强制结束软件进程

简介: 原文 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
目录
相关文章
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
372 1
MASM32写的免费软件“ProcView/系统进程监控” V1.4.4003 说明和下载
MASM32写的免费软件“ProcView/系统进程监控” V1.4.4003 说明和下载
|
消息中间件 安全 Java
【嵌入式软件工程师面经】Linux多进程与多线程
【嵌入式软件工程师面经】Linux多进程与多线程
307 1
|
机器学习/深度学习 数据可视化 搜索推荐
低代码开发是一种能够加速软件研发进程的高效开发方法
【8月更文挑战第4天】低代码开发是一种能够加速软件研发进程的高效开发方法
191 0
|
消息中间件 分布式计算 负载均衡
软件体系结构 - 架构风格(6)进程通信架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(6)进程通信架构风格
527 0
|
Java 关系型数据库 MySQL
JSP教师辅助办公软件教学进程管理系统yeclipse开发mysql数据库bs框架java编程jdbc
JSP 教师辅助办公软件教学进程管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
192 0
|
敏捷开发 数据可视化 测试技术
软件自动化测试工具的历史进程
软件测试最早可以追溯到1958年的美国第一个载人航天计划-水星计划,当时在该计划中首次诞生了软件测试团队。当然,在此之前也肯定是有软件测试存在的,但远没有这次有了自己的江湖地位。但这也仅仅是软件测试的萌芽,远没有到开宗立派的地步。
1509 0
软件自动化测试工具的历史进程
|
Windows
Windows系统查看各个进程网速的软件(查看网速工具)
Windows系统查看各个进程网速的软件(查看网速工具)
1527 0
|
监控 Linux Python
linux 进程监控软件 supervisor
2017年8月21日 17:51:33 星期一 supervisor python写的, 用来监控进程是否启动, 之前监控进程是否启动, 没有就拉起的shell代码是写在crontab里的, 这个软件提供了配置管理功能 参考文章: 配置1:  http://www.
1667 0