如何结束一个进程?

m_m 2002-03-16 08:35:38
如何在一个自己的程序里结束一个已经运行了的进程, 假设已知那个进程的可执行程序名为abc.exe, 再假设那个程序没有主窗口(不能用FindWindow()得到它的句柄),我该如何做?
...全文
53 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrh123 2002-03-16
  • 打赏
  • 举报
回复
同意阿剀
m_m 2002-03-16
  • 打赏
  • 举报
回复
谢谢
irlyo 2002-03-16
  • 打赏
  • 举报
回复
linux系统的话,直接用kill命令,kill pid就行了,如果不行的话 再加-9 或者-15参数 不过一般不要用的
strip 2002-03-16
  • 打赏
  • 举报
回复
已发送,请查收
irlyo 2002-03-16
  • 打赏
  • 举报
回复
98的话,直接CTRL+ALT+DEL,点你不想要的进程,结束就好了,不过一般会有问题,容易死机

2000的话,同样CTRL+ALT+DEL,然后在任务管理器里,点进程的标签,会列出所有进程,选择有问题的(一般是耗系统资源多的)结束就可以,但有些WINDOW的系统进程是不可以结束的
m_m 2002-03-16
  • 打赏
  • 举报
回复
我执行了EnumProcess之后只能得到进程的id, 我怎么知道这个进程的名字?
m_m 2002-03-16
  • 打赏
  • 举报
回复
email地址: m_m_cmb@citiz.net
m_m 2002-03-16
  • 打赏
  • 举报
回复
能说得再具体一些吗?
最好有一些代码,谢谢!
kaitty 2002-03-16
  • 打赏
  • 举报
回复
得到它的句柄:
98和NT不一样。98下可以用ToolHelp函数Process32First和Process32Next
来枚举当前所有进程的进程ID(先调用函数CreateToolhelp32Snapshot)
NT下用EnumProcesses函数来枚举。2000是支持ToolHelp函数的。
得到进程ID后就可以用OpenProcess函数得到句柄了,在NT和2000下要通过
安全检测。
Kill这个进程:
用Bool TerminateProcess(HANDLE hprocess,UNIT fuExitCode)

masterz 2002-03-16
  • 打赏
  • 举报
回复
EnumProcess 可以得到系统中的进程列表
杀掉本地进程其实很简单,取得进程ID后,调用OpenProcess函数打开进程句柄,然
后调用TerminateProcess函数就可以杀掉进程了。有些情况下并不能直接打开进程句柄,例如WINLOGON等系统进程,因为权限不够。这个时候我们就得先提升自己的进程的权限了。提升权限过程也不复杂,先调用GetCurrentProcess函数取得当前进程的句柄,然后调用OpenProcessToken打开当前进程的访问令牌,接着调用LookupPrivilegeValue函数取得你想提升的权限的值,最后调用AdjustTokenPrivileges函数给当前进程的访问令牌增加权限就可以了。一般有了SeDebugPrivilege特权后,就可以杀掉除Idle外的所有进程了。
strip 2002-03-16
  • 打赏
  • 举报
回复
我给你发个代码, 留QQ or email

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧