VC++结束进程
2012-04-09 10:28
309 查看
void pslist(void) { HANDLE hProcessSnap = NULL; PROCESSENTRY32 pe32= {0}; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == (HANDLE)-1) { printf("/nCreateToolhelp32Snapshot() failed:%d",GetLastError()); return ; } pe32.dwSize = sizeof(PROCESSENTRY32); printf("/nProcessName ProcessID"); if (Process32First(hProcessSnap, &pe32)) { char a[5]; do { itoa(pe32.th32ProcessID,a,10); printf("/n%-20s%d",pe32.szExeFile,pe32.th32ProcessID); } while (Process32Next(hProcessSnap, &pe32)); } else { printf("/nProcess32Firstt() failed:%d",GetLastError()); } CloseHandle (hProcessSnap); return; } BOOL killps(DWORD id)//杀进程函数 { HANDLE hProcess=NULL,hProcessToken=NULL; BOOL IsKilled=FALSE,bRet=FALSE; __try { if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hProcessToken)) { printf("/nOpen Current Process Token failed:%d",GetLastError()); __leave; } //printf("/nOpen Current Process Token ok!"); if(!SetPrivilege(hProcessToken,SE_DEBUG_NAME,TRUE)) { __leave; } printf("/nSetPrivilege ok!"); if((hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id))==NULL) { printf("/nOpen Process %d failed:%d",id,GetLastError()); __leave; } //printf("/nOpen Process %d ok!",id); if(!TerminateProcess(hProcess,1)) { printf("/nTerminateProcess failed:%d",GetLastError()); __leave; } IsKilled=TRUE; } __finally { if(hProcessToken!=NULL) CloseHandle(hProcessToken); if(hProcess!=NULL) CloseHandle(hProcess); } return(IsKilled); } BOOL SetPrivilege(HANDLE hToken,LPCTSTR lpszPrivilege,BOOL bEnablePrivilege)//提升权限 { TOKEN_PRIVILEGES tp; LUID luid; if(!LookupPrivilegeValue(NULL,lpszPrivilege,&luid)) { printf("/nLookupPrivilegeValue error:%d", GetLastError() ); return FALSE; } tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; if (bEnablePrivilege) tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; else tp.Privileges[0].Attributes = 0; AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD) NULL); if (GetLastError() != ERROR_SUCCESS) { printf("AdjustTokenPrivileges failed: %u/n", GetLastError() ); return FALSE; } return TRUE; }
相关文章推荐
- VC++结束程序进程
- VC获取进程启动和结束时间
- VC程序调用MATCOM导致进程不自动结束的解决办法
- 在VC中如何结束进程和启动新进程?
- VC结束进程
- VC程序中如何结束系统正在运行的其他进程 以及本程序自身
- VC程序中如何结束系统正在运行的其他进程
- VC++结束进程,干掉杀毒软件或者其他令人不爽的进程
- VC 创建和结束进程
- VC获取进程启动和结束时间
- VC创建和结束进程
- VC++结束进程
- vc 结束进程
- VC 创建新进程,结束进程 (打开exe等可执行文件)
- VC++结束程序进程
- 在VC中如何结束进程和启动新进程
- VC++结束程序进程
- VC++结束程序进程
- VC程序调用MATCOM导致进程不自动结束的解决办法
- 在VC中如何结束进程和启动新进程