Чтобы проинсталлировать сервис в базе данных SCM, необходимо воспользоваться функцией CreateService. Для этого дескриптору schSCManager необходимо иметь права SC_MANAGER_CREATE_SERVICE в объекте SCManager. Следующий пример демонстрирует установку сервиса.
VOID CreateSampleService() { LPCTSTR lpszBinaryPathName = "%SystemRoot%\\system\\testserv.exe";
schService = CreateService( schSCManager, // база данныйх SCManager "Sample_Srv", // имя сервиса lpszDisplayName, // имя, которое будет показываться SERVICE_ALL_ACCESS, // уровень доступа SERVICE_WIN32_OWN_PROCESS, // сервис будет запускаться // в собственном процессе SERVICE_DEMAND_START, // будет запускаться "вручную" SERVICE_ERROR_NORMAL, // стандартный режим // протоколирования ошибок lpszBinaryPathName, // путь к сервису NULL, // сервис не принадлежит группе NULL, // --""-- NULL, // нет зависимости NULL, // С правами системы NULL); // без пароля
if (schService == NULL) MyErrorExit("CreateService"); else printf("CreateService SUCCESS.\n");
CloseServiceHandle(schService); } |