Тема: AppToService
Показать сообщение отдельно

  #2  
Старый 14.01.2007, 21:02
Deem3n®
Постоянный
Регистрация: 19.09.2005
Сообщений: 408
Провел на форуме:
3730496

Репутация: 519
По умолчанию

Программная реализация:
Код:
#include <iostream>
#include <windows.h>
#include <winsvc.h>

main()
{
	SC_HANDLE MdaService, SCManager;
	
	SCManager = OpenSCManager(0, 0, SC_MANAGER_CREATE_SERVICE);
	if(!SCManager)
	{
		std::cout << "Error" << std::endl;
		return 1;
	}
	
	//////////////////////////////////////////////////
	// запуск (установка) обычной программы как сервис
	//////////////////////////////////////////////////
	MdaService = CreateService(
		SCManager, 
		"MdaServiceInternalName",
		"Mda Service External Name",
		SERVICE_ALL_ACCESS,
		SERVICE_WIN32_OWN_PROCESS,
		SERVICE_DEMAND_START,
		SERVICE_ERROR_NORMAL,
		"C:\\MdaService.exe",
		0,0,0,0,0);
	
	if(!MdaService)
	{
		CloseServiceHandle(SCManager);
		std::cout << "Error" << std::endl;
		return 1;
	}

	//////////////////////////////////////////////////
	// ну а это - удаление сервиса (если понадобится)
	//////////////////////////////////////////////////
	/*
	MdaService = OpenService( 
		SCManager,       
		"MdaServiceInternalName", 
		DELETE);

	
	if(!MdaService)
	{
		CloseServiceHandle(SCManager);
		std::cout << "Error" << std::endl;
		return 1;
	}

	if (!DeleteService(MdaService))
	{
		CloseServiceHandle(SCManager);
		std::cout << "Error" << std::endl;
		return 1;
	}
	*/
	
	CloseServiceHandle(MdaService);
	CloseServiceHandle(SCManager);
	
	return 0;
}