1. Uses
  2. Windows,
  3. SysUtils,
  4. Tlhelp32 ;
  5. Function KillTask( ExeFileName: String ): Integer ; //关闭进程
  6. Function EnableDebugPrivilege: Boolean ; //提升权限
  7. Function FindProcessId( ExeFileName: String ): THandle ; //查找进程
  8. Implementation
  9. Function FindProcessId( ExeFileName: String ): THandle ;
  10. Var
  11. ContinueLoop: BOOL ;
  12. FSnapshotHandle: THandle ;
  13. FProcessEntry32: TProcessEntry32 ;
  14. Begin
  15. result := 0 ;
  16. FSnapshotHandle := CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ) ;
  17. FProcessEntry32.dwSize := Sizeof( FProcessEntry32 ) ;
  18. ContinueLoop := Process32First( FSnapshotHandle, FProcessEntry32 ) ;
  19. While integer( ContinueLoop ) <> 0 Do
  20. Begin
  21. If UpperCase( FProcessEntry32.szExeFile ) = UpperCase( ExeFileName ) Then
  22. Begin
  23. result := FProcessEntry32.th32ProcessID ;
  24. break ;
  25. End ;
  26. ContinueLoop := Process32Next( FSnapshotHandle, FProcessEntry32 ) ;
  27. End ;
  28. CloseHandle( FSnapshotHandle ) ;
  29. End ;
  30. Function KillTask( ExeFileName: String ): Integer ;
  31. Const
  32. PROCESS_TERMINATE = $0001 ;
  33. Var
  34. ContinueLoop: boolean ;
  35. FSnapshotHandle: THandle ;
  36. FProcessEntry32: TProcessEntry32 ;
  37. Begin
  38. Result := 0 ;
  39. FSnapshotHandle := CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ) ;
  40. FProcessEntry32.dwSize := SizeOf( FProcessEntry32 ) ;
  41. ContinueLoop := Process32First( FSnapshotHandle, FProcessEntry32 ) ;
  42. While Integer( ContinueLoop ) <> 0 Do
  43. Begin
  44. If ( ( UpperCase( ExtractFileName( FProcessEntry32.szExeFile ) ) =
  45. UpperCase( ExeFileName ) ) Or ( UpperCase( FProcessEntry32.szExeFile ) =
  46. UpperCase( ExeFileName ) ) ) Then
  47. Result := Integer( TerminateProcess(
  48. OpenProcess( PROCESS_TERMINATE,
  49. BOOL( 0 ),
  50. FProcessEntry32.th32ProcessID ),
  51. 0 ) ) ;
  52. ContinueLoop := Process32Next( FSnapshotHandle, FProcessEntry32 ) ;
  53. End ;
  54. CloseHandle( FSnapshotHandle ) ;
  55. End ;
  56. //但是对于服务程序,它会提示"拒绝访问".其实只要程序拥有Debug权限即可:
  57. Function EnableDebugPrivilege: Boolean ;
  58. Function EnablePrivilege( hToken: Cardinal ;PrivName: String ;bEnable: Boolean ): Boolean ;
  59. Var
  60. TP: TOKEN_PRIVILEGES ;
  61. Dummy: Cardinal ;
  62. Begin
  63. TP.PrivilegeCount := 1 ;
  64. LookupPrivilegeValue( Nil, pchar( PrivName ), TP.Privileges[ 0 ].Luid ) ;
  65. If bEnable Then
  66. TP.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED
  67. Else
  68. TP.Privileges[ 0 ].Attributes := 0 ;
  69. AdjustTokenPrivileges( hToken, False, TP, SizeOf( TP ), Nil, Dummy ) ;
  70. Result := GetLastError = ERROR_SUCCESS ;
  71. End ;
  72. Var
  73. hToken: Cardinal ;
  74. Begin
  75. OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken ) ;
  76. result := EnablePrivilege( hToken, 'SeDebugPrivilege', True ) ;
  77. CloseHandle( hToken ) ;
  78. End ;
  79. End.

Delphi 中关闭指定进程的方法的更多相关文章

  1. DELPHI实现关闭指定进程,自身防杀

    偶然翻到很久以前用DELPHI写的一个小程序,实现功能是在后台默默关闭符合条件的进程,并隐藏自身.编写目的是为了防止办公电脑运行游戏. 实现原理是: 1.程序运行后将自身以不同的名称一式三份存到系统各 ...

  2. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  3. C#判断一个类中有无"指定名称"的方法

    C#中可以通过反射分析元数据来解决这个问题,示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  4. Windows Server 2008中关闭事件跟踪程序的方法

    Windows Server 2008跟Windows Server 2003一样,在关机的时候会弹出一个“关闭事件跟踪程序”窗口,当然微软这么做是处于安全的考虑啦,但是如果我们只是个人用用的话,那就 ...

  5. Delphi中建立指定大小字体和读取该字体点阵信息的函数(转)

    源:Delphi中建立指定大小字体和读取该字体点阵信息的函数 Delphi中建立指定大小字体和读取该字体点阵信息的函数 作者:Thermometer Email:  webmaster@daheng- ...

  6. mac查看当前调用tcp的进程并关闭指定进程

    查看所有tcp进程 监听的端口 lsof -iTCP -sTCP:LISTEN 查看指定端口信息 lsof -i: 关闭指定进程 kill -

  7. Python3实现从文件中读取指定行的方法

    from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...

  8. python实现在目录中查找指定文件的方法

    python实现在目录中查找指定文件的方法 本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 代码如下: import os from ...

  9. Shell 关闭指定进程

    例如要关闭jupyter-notebook这个进程: - | 说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入. “ps -ef” 查看所有进程 “grep -v g ...

随机推荐

  1. lower_bound() 与 upper_bound()

    1. lower_bound() lower_bound()是泛型算法,在使用时,需要先将序列进行排序: 作用:  函数lower_bound()在first和last中的前闭后开区间进行二分查找,返 ...

  2. HTML_<select>

    1.设置select只读不可编辑且select的值可传递 (1) <select onfocus="this.defaultIndex=this.selectedIndex;" ...

  3. Educational Codeforces Round 27 F. Guards In The Storehouse

    F. Guards In The Storehouse time limit per test 1.5 seconds memory limit per test 512 megabytes inpu ...

  4. poj 2367

    Genealogical tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3658   Accepted: 2433 ...

  5. hdu 5881 Tea (2016 acm 青岛网络赛)

    原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5881 Tea Time Limit: 3000/1000 MS (Java/Others)    Me ...

  6. Linux下SVN安装与权限管理

    cat /etc/redhat-release //查看系统版本号 CentOS release 7.1 (Final) 这里我们採用yum源安装方式: 1.安装svn yum install sub ...

  7. 求最小正整数x,A^x=1(mod M)求阶模板

    整数的阶:设a和n是互素的正整数,使得a^x=1(mod n)成立的最小的正整数x称为a模n的阶 //求阶模板:A^x=1(mod M),调用GetJie(A,M) //输入:10^10>A,M ...

  8. docker安装并配置加速

    安装 旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本: sudo apt-get remove docker \ docker-engine \ ...

  9. 九度OJ 1252:回文子串 (字符串处理、DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:387 解决:224 题目描述: 输入一个字符串,输出该字符串中对称的子字符串的最大长度. 比如输入字符串"google" ...

  10. 经典的css reset代码 (reset.css)

    <style> html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, ...