|
|
list and kill process |
|
|
作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站 |
#include <windows.h> #include <stdio.h> #include "psapi.h" #pragma comment(lib,"psapi.lib")
void usage( int );
//Define Command parameters bool l=FALSE; bool a=FALSE; bool k=FALSE;
//kill process by id void processkill (unsigned int PID) { DWORD ObjectRetn; HANDLE Killprcshd; UINT fuExitcode; if((Killprcshd = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID))==NULL) { printf("\nOpen Process %d failed:%d \n",PID,GetLastError()); exit; }
printf("The Process id is : %d\n",PID); //PostMessage(Killprcshd, WM_CLOSE, 0, 0); //终止对应的进程 TerminateProcess(Killprcshd, fuExitcode); //判断是否正常终止该进程} ObjectRetn =WaitForSingleObject(Killprcshd, INFINITE); if(ObjectRetn!=WAIT_FAILED) printf("Kill Process succeeds!\n"); else { printf("Access is denied!\n"); printf("Kill Process Fail:Error %d",GetLastError()); return; } CloseHandle(Killprcshd);
}
void PrintProcessNameAndId(DWORD processID,bool a) { char szProcessName[MAX_PATH]="unknown"; char szProcessName1[MAX_PATH]="unknown"; int i,ModuleNum;
//打开进程 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION| PROCESS_VM_READ, FALSE,processID); printf( "\n %u ", processID ); if(hProcess) { HMODULE hMod[1024]; DWORD cbNeeded; //调用EnumProcessModules枚举该进程调用的所有模块 if( EnumProcessModules(hProcess,hMod,sizeof(hMod),&cbNeeded)) { ModuleNum=cbNeeded / sizeof(HMODULE); if(!a) ModuleNum=1; //调用循环以取得所有模块 for(i=0;i<ModuleNum;i++) { //GetModuleFileNameEx获得各个模块文件的全路径 GetModuleFileNameEx(hProcess, hMod, szProcessName1, sizeof(szProcessName1)); printf("\t%-20s \n", szProcessName1);
}
}
CloseHandle(hProcess); }
}
void main(int argc, char **argv) { DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; unsigned int PID;
//Get command parameters if(argc==1) { usage(1); exit(0); } for(int j=1;j<argc;j++) { if ((argv[j][0]=='/') || (argv[j][0]=='-')) switch(argv[j][1]) { case 'a': case 'A': a=true; break; case 'l': case 'L': l=true; break; case 'k': case 'K': { k=true; if(argv[j][3]) PID=atoi(argv[j]+3); break; } case '?': case 'h': case 'H': usage(1);break; default: usage(0);break; } } if(l) { printf("\n\nID Process\n");
// Get the list of process identifiers. if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return; // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name of the modules for each process. for ( i = 0; i < cProcesses; i++ ) PrintProcessNameAndId( aProcesses,a ); } if(k) processkill(PID); }
void usage(int ErrorCode) { if(!ErrorCode) printf("Parameters Error\n"); printf("\n"); printf("\t\t\tlist and kill tools \n"); printf("\tCode by alpha @www.cnwill.com /www.securityfaq.org\n"); printf("\n"); printf("USAGE:\n"); printf("\t/l List All Processes\n"); printf("\t/l /a List All Processes And Moudles\n"); printf("\t/k processid Kill the process by processid\n"); }

|
|
相关文章:相关软件: |
|