VC++结束进程

  
  
  
  
  1. void pslist(void
  2. HANDLE hProcessSnap = NULL; 
  3. PROCESSENTRY32 pe32= {0}; 
  4. hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
  5. if (hProcessSnap == (HANDLE)-1) 
  6. printf("/nCreateToolhelp32Snapshot() failed:%d",GetLastError()); 
  7. return ; 
  8. pe32.dwSize = sizeof(PROCESSENTRY32); 
  9. printf("/nProcessName     ProcessID"); 
  10. if (Process32First(hProcessSnap, &pe32)) 
  11.  char a[5]; 
  12. do 
  13. itoa(pe32.th32ProcessID,a,10); 
  14. printf("/n%-20s%d",pe32.szExeFile,pe32.th32ProcessID); 
  15. while (Process32Next(hProcessSnap, &pe32)); 
  16. else 
  17.  printf("/nProcess32Firstt() failed:%d",GetLastError()); 
  18. CloseHandle (hProcessSnap); 
  19. return
  20.  
  21. BOOL killps(DWORD id)//杀进程函数 
  22. HANDLE hProcess=NULL,hProcessToken=NULL; 
  23. BOOL IsKilled=FALSE,bRet=FALSE; 
  24. __try 
  25.  
  26. if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hProcessToken)) 
  27. printf("/nOpen Current Process Token failed:%d",GetLastError()); 
  28. __leave; 
  29. //printf("/nOpen Current Process Token ok!"); 
  30. if(!SetPrivilege(hProcessToken,SE_DEBUG_NAME,TRUE)) 
  31. __leave; 
  32. printf("/nSetPrivilege ok!"); 
  33.  
  34. if((hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id))==NULL) 
  35. printf("/nOpen Process %d failed:%d",id,GetLastError()); 
  36. __leave; 
  37. //printf("/nOpen Process %d ok!",id); 
  38. if(!TerminateProcess(hProcess,1)) 
  39. printf("/nTerminateProcess failed:%d",GetLastError()); 
  40. __leave; 
  41. IsKilled=TRUE; 
  42. __finally 
  43. if(hProcessToken!=NULL) CloseHandle(hProcessToken); 
  44. if(hProcess!=NULL) CloseHandle(hProcess); 
  45. return(IsKilled); 
  46.   
  47. BOOL SetPrivilege(HANDLE hToken,LPCTSTR lpszPrivilege,BOOL bEnablePrivilege)//提升权限 
  48. TOKEN_PRIVILEGES tp; 
  49. LUID luid; 
  50.  
  51. if(!LookupPrivilegeValue(NULL,lpszPrivilege,&luid)) 
  52. printf("/nLookupPrivilegeValue error:%d", GetLastError() ); 
  53. return FALSE; 
  54. tp.PrivilegeCount = 1; 
  55. tp.Privileges[0].Luid = luid; 
  56. if (bEnablePrivilege) 
  57. tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
  58. else 
  59. tp.Privileges[0].Attributes = 0; 
  60. AdjustTokenPrivileges( 
  61. hToken, 
  62. FALSE, 
  63. &tp, 
  64. sizeof(TOKEN_PRIVILEGES), 
  65. (PTOKEN_PRIVILEGES) NULL, 
  66. (PDWORD) NULL); 
  67. if (GetLastError() != ERROR_SUCCESS) 
  68. printf("AdjustTokenPrivileges failed: %u/n", GetLastError() ); 
  69. return FALSE; 
  70. return TRUE; 

 

你可能感兴趣的:(职场,进程,vc++,休闲,结束)