原文 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

NSIS:强制结束软件进程相关推荐

  1. Delphi中强制结束一个进程

    强制结束一个进程的 API 为 TerminateProcess BOOL TerminateProcess( HANDLE hProcess, // 进程句柄 UINT uExitCode // 退 ...

  2. Linux中强制结束一个进程的终极方法和其他常用命令

    Linux中强制结束一个进程的终极方法和其他常用命令 1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序. ps -A 显示所有程序. ps c ...

  3. CMD专业 :taskkill :::强制结束各种进程---查询端口号及占用端口号等

    Window 中杀死指定端口 cmd 命令行 taskkill 前言: 对于经常会遇到电脑卡死啊,进程结束不了啊,界面卡死之类的,什么谷歌的无响应啊之类的,有关比不了,特别烦的就可以用以下方法解决啦, ...

  4. linux 强制结束p进程的命令,Linux常用命令之性能命令

    本文介绍Linux常用性能统计分析命令,监控进程或者系统性能.主要包括CPU(top.mpstat).内存(vmstat.free).I/O(iostat).网络性能(sar).系统日志信息(dems ...

  5. win10taskkill强行结束进程_批处理文件BAT找到进程PID并强制结束TaskKill进程

    Taskkill 1 简介 taskkill 是用来终止进程的.具体的命令规则如下: TASKKILL [/S system [/U username [/P [ password ]]]] { [/ ...

  6. VC/MFC 强制结束当前进程

    最近接手一个MFC老项目,Bug太多,主线程退出的时候,也不管子线程死活,直接退出,导致子线程又去访问那些被释放的资源,结果程序无法关闭,或者导致进程在后台驻留了. 这里提供一种简单粗暴的方法: // ...

  7. Linux中强制结束一个进程的终极方法

    在 Linux Ubuntu 服务器上用 dnx 基于 Kestrel 成功运行一个 ASP.NET 5 站点后,怎么也无无法退出. 运行的命令如下: /data/git/dnx/artifacts/ ...

  8. linux kill强制结束进程参数,Linux结束进程之kill、killall、pkill命令

    1. 前言 我们经常在Linux里使用kill命令来结束某后台进程.但kill命令实际上是向进程发送信号,并且有多种信号.终止运行一个程序只是其中一个信号而已.kill是根据进程号发送信号的,而另一个 ...

  9. 使用 PspTerminateThreadByPointer 强制结束进程

    实现过程 我们知道,线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进 ...

最新文章

  1. Linux qgis 编译,QGIS简介与源代码编译
  2. 为何 NLP 领域难以出现“独角兽”?
  3. 如何搭建python框架_从零开始:写一个简单的Python框架
  4. 06--swift之闭包
  5. HTML5中figure标签使用实例
  6. React开发(138):ant design学习指南之anchor处理
  7. SpringMVC注解驱动开发
  8. JSON Web Token实际应用
  9. Cache之组相连映射
  10. MCGS触摸屏通过MODBUS通讯速度控制台达B2伺服参数,有触摸屏源程序和伺服设定参数,实际的项目应用的。
  11. AirDisk创建网盘
  12. 1055 集体照 (25 分)
  13. shal()函数绕过和session验证绕过
  14. php screw 密钥,php-screw php代码加密工具用法(整理)
  15. .net core发布到IIS上出现 HTTP 错误 500.19,错误代码:0x8007000d
  16. MCE公司:重磅!明星靶点TLR4助力攻克脑血管难题!
  17. 2006年最热门的职业
  18. 2021年英语六级翻译
  19. 对计算机的磁盘进行维护,电脑硬盘如何进行维护?
  20. 思岚科技亮相2017电子博览会 倍受瞩目

热门文章

  1. 解决vscode卡顿,CPU占用过高的问题
  2. css3 动画与display:none冲突的解决方案
  3. linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
  4. 在ASP.NET Web API中返回错误的最佳实践
  5. @class与#import
  6. win固定ip无效,自动配成169.254.xx.xx
  7. linux c++ utf8 gbk,Linux C++ gbk转为utf-8
  8. __name__的意义与作用
  9. Linux常用基本命令:三剑客命令之-awk内置函数用法
  10. 微信小程序 自定义组件(stepper)