VB如何挂起一个进程,包括它的所有的线程呢

时间:2022-08-15 18:06:17
我现在要结束一个病毒的进程,结果一结束它就把任务栏个隐藏了,我想了这么个办法
就是先挂起进程,包括进程下的所有线程,之后在结束它,但是我不知如何挂起一个线程,
请大哥们帮忙.

7 个解决方案

#1


NT 下有个api就行, ntsupxxxptocess  是ntdll.dll 中的1个导出函数,你搜下

#2


(因为没有带API 浏览器,下面有些声明可能是错误的…………)
先用CreateToolhelp32Snapshot获取线程快照,枚举所有线程

Private Type THREADENTRY32
  dwsize   As Long
  cntusage   As Long
  th32threadID   As Long '线程ID
  th32OwnerProcessID   As Long '对比这个值是否为病毒进程的PID
  tpBasePri   As Long
  tpDeltaPri   As Long
  dwFlags   As Long
End Type

OpenThread(THREAD_SUSPENDEDRESUMED, False, TID.th32threadID)'获取该线程的暂停/恢复权限
再用SuspendThread 暂停线程,或者TerminateThread 结束线程(需要相关权限),用ResumeThread 可以恢复线程,最后CloseHandle

#3


如果要结束线程的话,还需要什么权限呢?
具体实现代码?

#4


  挂起线程  并不一定能解决问题!

#5


那解决问题该用什么办法呢?

#6


GZ

PZ~~

#7


谢谢大家的提醒,答案我已经找到了!

#1


NT 下有个api就行, ntsupxxxptocess  是ntdll.dll 中的1个导出函数,你搜下

#2


(因为没有带API 浏览器,下面有些声明可能是错误的…………)
先用CreateToolhelp32Snapshot获取线程快照,枚举所有线程

Private Type THREADENTRY32
  dwsize   As Long
  cntusage   As Long
  th32threadID   As Long '线程ID
  th32OwnerProcessID   As Long '对比这个值是否为病毒进程的PID
  tpBasePri   As Long
  tpDeltaPri   As Long
  dwFlags   As Long
End Type

OpenThread(THREAD_SUSPENDEDRESUMED, False, TID.th32threadID)'获取该线程的暂停/恢复权限
再用SuspendThread 暂停线程,或者TerminateThread 结束线程(需要相关权限),用ResumeThread 可以恢复线程,最后CloseHandle

#3


如果要结束线程的话,还需要什么权限呢?
具体实现代码?

#4


  挂起线程  并不一定能解决问题!

#5


那解决问题该用什么办法呢?

#6


GZ

PZ~~

#7


谢谢大家的提醒,答案我已经找到了!