Три женщины одеваются в раздевалке после занятия спортивной аэробикой. Разговор, конечно, о мужьях.
- Мой муж, - говорит первая, - работает учителем. Он всегда дарит мне коробку конфет или букет цветов перед тем, как овладеть мною.
- А мой - ювелир, - говорит вторая, - перед тем как заняться любовью со мной, - он дарит мне жемчужину.
Третья женщина задумалась на минутку и говорит:
- А мой муж работает в Микрософт. Он всегда присаживается на край кровати и рассказывает мне, как это будет здорово для меня, когда он меня трахнет.
uses
Windows, Messages, SysUtils, StdCtrls, SvcMgr;
var
ssStatus: TServiceStatus;
schSCManager, schService: SC_HANDLE ;
begin
schSCManager := OpenSCManager( PChar('Comp1'), // имя компьютера, nil - local machinenil, // ServicesActive database
SC_MANAGER_ALL_ACCESS); // full access rightsif schSCManager = 0 then
exit; //Ошибка?
schService := OpenService(
schSCManager, // SCM database
PChar('SQLServerAgent'), // посмотри имя в Services. В данном случае - MS Server Agent
SERVICE_ALL_ACCESS);
if schService = 0 then
exit; //Ошибка?ifnot QueryServiceStatus(
schService, // handle to service
ssStatus) then// address of status information structure
exit; //Ошибка?case ssStatus.dwCurrentState of:
SERVICE_RUNNING: ShowMessage('Работает!');
SERVICE_STOPPED: ShowMessage('Выключен');
// ну и т.д.end;
end;
Программа на Delphi, которая демонстрирует, как удаленно управлять Windows-сервисом на другом компьютере с помощью API-интерфейса управления сервисами (SCM) Windows.
Программа использует следующие компоненты:
Windows - обеспечивает доступ к API Windows
Messages - используется для межпотоковой связи
SysUtils - утилитарные функции и константы
StdCtrls - стандартные контроли, такие как кнопки и метки
SvcMgr - менеджер сервисов, который обеспечивает доступ к SCM
Программа определяет два переменных:
ssStatus: структура TServiceStatus, которая содержит информацию о состоянии сервиса
schSCManager и schService: handles к базе данных SCM и конкретному сервису соответственно
Программа выполняет следующие шаги:
Открывает базу данных SCM на удаленном компьютере (Comp1) с помощью функции OpenSCManager, указывая имя компьютера, тип базы данных (ServicesActive) и права доступа.
Если операция открытия неудачна, программа завершается.
Открывает конкретный сервис (SQLServerAgent) в базе данных SCM с помощью функции OpenService, указывая handle к базе данных SCM и имя сервиса.
Если операция открытия неудачна, программа завершается.
Просходит текущее состояние сервиса с помощью функции QueryServiceStatus, передавая handle к сервису и указатель на структуру ssStatus.
Если операция запроса неудачна, программа завершается.
Программа проверяет текущее состояние сервиса (используя поле dwCurrentState структуры ssStatus) и отображает сообщение с соответствующей информацией.
Программа использует простой switch-оператор для обработки различных состояний сервисов:
SERVICE_RUNNING: отображает сообщение с текстом "Работает!" (works!)
SERVICE_STOPPED: отображает сообщение с текстом "Выключен" (stopped)
Обратите внимание, что эта программа предполагает, что удаленный компьютер работает под Windows и что сервис существует на этом компьютере. Кроме того, программа использует функцию ShowMessage для отображения сообщений, которая может не быть подходящей для всех сценариев.
В качестве альтернативного решения можно использовать третьестороннюю библиотеку или фреймворк, который предоставляет болееadvanced функции для удаленного управления сервисами, такие как:
Встроенный компонент TService Delphi
Третьесторонний компонент менеджера сервисов
Custom-implementation с использованием API Windows
Также стоит отметить, что удаленное управление сервисами можно выполнить другими способами, такими как:
Использование API WMI (Windows Management Instrumentation)
Использование PowerShell или других скриптовых языков
Использование удаленного десктопа и взаимодействие с сервисом вручную
Выбор подходящего метода зависит от вашей конкретной задачи и ограничений.
Статья описывает способ управления сервисом на другом компьютере в Windows 2000, используя язык программирования Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.