- 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;
- }
转载于:https://blog.51cto.com/thgenius/829767