Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Управление сервисом

293
03 февраля 2004 года
SEDEGOFF
586 / / 06.10.2002
Как из программы управлять сервисов
1
04 февраля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by SEDEGOFF
Как из программы управлять сервисов


Получив его идентификатор...:D
После этого можно посылать ему управляющие сообщения используя например ControlService.
Кроме того можно использовать функцию 2Fh 1606 к примеру для остановки сервиса.

1
04 февраля 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by SEDEGOFF
Как из программы управлять сервисов


Посмотри описание функции OpenSCManager, через нее ты можешь получить доступ к сервисам на компьютере и управлять их состоянием. Если у программы достаточно на это прав.

1
06 февраля 2004 года
kot_
7.3K / / 20.01.2000
Вот пример из Мелкософта для NT платформы:
Код:
#define SCHED_CLASS             TEXT("SAGEWINDOWCLASS")
#define SCHED_TITLE             TEXT("SYSTEM AGENT COM WINDOW")
#define SCHED_SERVICE_APP_NAME  TEXT("mstask.exe")
#define SCHED_SERVICE_NAME      TEXT("Schedule")

.....

SC_HANDLE   hSC = NULL;
        SC_HANDLE   hSchSvc = NULL;

        hSC = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);

        if (hSC == NULL)
        {
            return GetLastError();
        }

        hSchSvc = OpenService(hSC,
                              SCHED_SERVICE_NAME,
                              SERVICE_START | SERVICE_QUERY_STATUS);

        CloseServiceHandle(hSC);

        if (hSchSvc == NULL)
        {
            return GetLastError();
        }

        SERVICE_STATUS SvcStatus;

        if (QueryServiceStatus(hSchSvc, &SvcStatus) == FALSE)
        {
            CloseServiceHandle(hSchSvc);
            return GetLastError();
        }

        if (SvcStatus.dwCurrentState == SERVICE_RUNNING)
        {
            // The service is already running.
            CloseServiceHandle(hSchSvc);
            return ERROR_SUCCESS;
        }

        if (StartService(hSchSvc, 0, NULL) == FALSE)
        {
            CloseServiceHandle(hSchSvc);
            return GetLastError();
        }

        CloseServiceHandle(hSchSvc);

        return ERROR_SUCCESS;
    }
1.8K
07 февраля 2004 года
ALI
129 / / 10.01.2003
Цитата:
Originally posted by SEDEGOFF
Как из программы управлять сервисов


а что ты имеешь ввиду под управлением сервисом

если то что делает Менджер сервисов (остановка запуск и тд.)
то все это можно выполнить с помощью
консольных команд net start, net stop
также имеються соответствующие функции API

установка удаление сервиса /install, /uninstall


а передача каких либо команд своему сервису можно реализовать разными способами
например через сокеты, или именованные каналы
также возможно использование семафоров
и разделяемых областей памяти, т.е. можно
использовать любой из способов взаимодействия между процессами

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог