Всем привет. Вот пишу класс для программы. Который позволит зарегисрировать ее как сервис в Win.
Вот приведу код:
#ifndef _SYSTEMSERVICE_H
#define _SYSTEMSERVICE_H
#include <stdio.h>
#include <windows.h>
class CSystemService
{
friend void __stdcall ServiceMain(int argc, char* argv[]);
public:
CSystemService(LPTSTR lpServiceName);
CSystemService();
~CSystemService();
void Install();
private:
SERVICE_TABLE_ENTRY m_ServiceTable[1];
SERVICE_STATUS m_ServiceStatus;
SERVICE_STATUS_HANDLE m_hStatus;
private:
static void _stdcall ServiceMain(int argc, char* argv[]);
};
#endif // _SYSTEMSERVICE_H
#include "SystemService.h"
CSystemService::CSystemService(LPTSTR lpServiceName)
{
m_ServiceTable[0].lpServiceName = lpServiceName;
m_ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
if (!StartServiceCtrlDispatcher(m_ServiceTable))
printf("START SERVICE CTRL DISPATCHER ERROR = %d\n", GetLastError());
}
CSystemService::CSystemService()
{
//
}
CSystemService::~CSystemService()
{
//
}
void __stdcall CSystemService::ServiceMain(int argc, char* argv[])
{
//
}
void CSystemService::Install()
{
//
SC_HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (!hSCManager)
printf("OPEN SC MANAGER ERROR = %d\n", GetLastError());
SC_HANDLE hService = CreateService(
hSCManager,
L"prg",
L"prg",
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_DEMAND_START,
SERVICE_ERROR_NORMAL,
L"C:\\prg.exe",
NULL, NULL, NULL, NULL, NULL
);
if (hService == NULL)
printf_s("CREATE SERVICE = %d\n", GetLastError());
}
после выполнения программы с данным кодом получаю след. ошибки.
START SERVICE CTRL DISPATCHER ERROR = 1063
OPEN SC MANAGER ERROR = 5
CREATE SERVICE = 6
Для продолжения нажмите любую клавишу . . .
Помогите разобраться.
17.01.11 12:39: Перенесено из 'C/C++'