www.pudn.com > PIPMasq.zip > remove.cpp


#include "stdafx.h"  
#include  
#include  
 
void remove(void) 
{ 
	SC_HANDLE service, scm; 
	BOOL success; 
	SERVICE_STATUS status; 
 
	cout << "Starting...\n"; 
 
	scm = OpenSCManager(0, 0, SC_MANAGER_CREATE_SERVICE); 
	if (!scm) 
	{ 
		cout << "In CreateService" << endl; 
		cout << "Error number: " << GetLastError() << endl; 
 
		ExitProcess(GetLastError()); 
	} 
 
	service = OpenService(scm, "PIPMasqService",	SERVICE_ALL_ACCESS | DELETE); 
	if (!service) 
	{ 
		cout << "In OpenService" << endl; 
		cout << "Error number: " << GetLastError() << endl; 
 
		ExitProcess(GetLastError()); 
	} 
	 
	success = QueryServiceStatus(service, &status); 
	if (!success) 
	{ 
		cout << "In QueryServiceStatus" << endl; 
		cout << "Error number: " << GetLastError() << endl; 
 
		ExitProcess(GetLastError()); 
	} 
 
 
	if (status.dwCurrentState != SERVICE_STOPPED) 
	{ 
		cout << "Stopping service...\n"; 
		success = ControlService(service, 
			SERVICE_CONTROL_STOP,  
			&status); 
		if (!success) 
		{ 
			cout << "In ControlService" << endl; 
			cout << "Error number: " << GetLastError() << endl; 
 
			ExitProcess(GetLastError()); 
		} 
		Sleep(500); 
	} 
 
	success = DeleteService(service); 
	if (success) 
		cout << "Service removed\n"; 
	else 
	{ 
		cout << "In DeleteService" << endl; 
		cout << "Error number: " << GetLastError() << endl; 
 
		ExitProcess(GetLastError()); 
	} 
 
	CloseServiceHandle(service); 
	CloseServiceHandle(scm); 
	cout << "Ending...\n"; 
}