Программа конфигурации службы использует функцию CreateService, чтобы установить службу в базу данных Диспетчера управления службами (SCM). Следующий пример показывает, как установить службу. Определенный приложением дескриптор schSCManager должен иметь доступ SC_MANAGER_CREATE_SERVICE объекта SCManager. Пример того, как сделать это, см. статью Открытие базы данных SCManager.
#include <windows.h>
#include <stdio.h>
BOOL CreateSampleService()
{
TCHAR szPath[MAX_PATH];
if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
{
printf("GetModuleFileName failed (%d)\n", GetLastError());
return FALSE;
}
schService = CreateService(
schSCManager, // база данных SCManager
TEXT("Sample_Srv"), // имя службы
lpszDisplayName, // экранное имя службы
SERVICE_ALL_ACCESS, // желательный доступ
SERVICE_WIN32_OWN_PROCESS, // тип службы
SERVICE_DEMAND_START, // тип запуска
SERVICE_ERROR_NORMAL, // тип управления ошибками
szPath, // путь к двоичному коду службы
NULL, // не загружать порядок групп
NULL, // идентификатор признака не установлен
NULL, // зависимости от других служб нет
NULL, // учетная запись LocalSystem
NULL); // пароля нет
if (schService == NULL)
{
printf("CreateService failed (%d)\n", GetLastError());
return FALSE;
}
else
{
CloseServiceHandle(schService);
return TRUE;
}
} |