Программа конфигурации службы использует функцию 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; } } |