15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Установка сервиса.

Чтобы проинсталлировать сервис в базе данных 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);
}