Службы ос windows


 - Драйверы, которые загружаются после инициализации ядра ОС; 2



страница2/7
Дата12.09.2022
Размер452 Kb.
#131041
1   2   3   4   5   6   7
kontr app (5)

1 - Драйверы, которые загружаются после инициализации ядра ОС;
2 - Службы, которые должны быть загружены Диспетчером Управления Сервисами (соответствуют режиму "Авто");
3 - Службы, запускаемые Диспетчером Управления Сервисами,
только в случае получения явной инструкции на загрузку (соответствует режиму - "Вручную");
4 - Службы, которые не загружаются (соответствует режиму - "Отключено").
Для управления службой из командной строки (подобный интерфейс удобен для автоматизации задач управления службой, например, в командных файлах), можно использовать команды:
- для остановки службы — net stop service_name 
- для запуска службы — net start service_name .
- для удаления службы - sc delete „Имя службы“
-для изменения режима запуска службы: sc config „Имя службы“ start= параметр запуска. Доступны параметры запуска: auto (автоматически), demand (вручную), disabled (отключена).
Интерфейс WMI предоставляет класс Win32_Service, позволяющий осуществлять мониторинг и управление службами.
Некоторое приложение должно функционировать как служба в том случае, если оно:
- должно работать неопределенно долгое время;
- запускаться автоматически при старте операционной системы;
- обслуживать запросы нескольких клиентов.


Разработка службы Windows в среде VS VisualStudio 2008 на языке C#

Создание проекта службы в MS VisualStudio 2008 осуществляется выбором пункта меню Файл->Создать->Проект…


В появившемся окне (рис.1) необходимо выбрать шаблон проекта, его название, месторасположение, версию платформы .NET, для которой разрабатывается служба.

Рис.1 Окно создания проекта службы в MS Visual Studio на языке C#.

После нажатия кнопки OK будет создан проект, содержащий следующие файлы (рис. 2):



Рис 2. Состав проекта службы

Файл Service.cs содержит определение класса службы, унаследованного от класса System.ServiceProcess.ServiceBase. В этом классе прежде всего необходимо определить действия, выполняемые службой при старте (в обработчике события OnStart) и остановке (OnStop). Программист может добавить обработчики для событий приостановки (метод OnPause ()) и возобновления (метод OnContinue ()) службы.


using System;


using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
namespace TestSevice
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
}
}
В дизайнере формы для службы можно добавить компоненты, необходимые для обеспечения ее функциональности (рис.3). С учетом особенностей функционирования служб это должны быть невизуальные компоненты, обычно – таймеры, классы для работы с данными и т.п.

Рис. 3. Дизайнер формы для службы
Работая в дизайнере формы для службы в окне свойств можно определить строковое название службы, под которым она будет доступна в системе (свойство ServiceName), будут ли автоматически фиксироваться сообщения о старте-остановке службы в журнале системы (AutoLog), может ли служба останавливаться (CanStop), приостановить и возобновить ее (CanPauseAndContinue) и др.
В файле Program.cs располагается точка входа в службу – функция Main. Она создает экземпляр класса службы из файла Service.cs, а также регистрирует службу в диспетчере служб системы методом Run().

using System.ServiceProcess;


using System.Text;
namespace TestSevice
{
static class Program
{
///
/// Главная точка входа для приложения.
///

static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
}
Далее необходимо наполнить кодом обработчики событий службы в соответствии с алгоритмом ее работы. Пример кода службы можно посмотреть в приложении.
Для того, чтобы службу можно было инсталлировать в проект необходимо добавить специальные классы ServiceInstaller и ServiceProcessInstaller. Сделать это можно, выбрав в контекстном меню дизайнера службы команду Добавить установщик. Класс ServiceInstaller вызывается программой установки при установке служебного приложения. В свойствах этого класса можно указать имя, под которым служба будет известна в системе (ServiceName), указать зависимости службы от других служб (ServiceDependedOn), способ и время запуска службы: Вручную, Автоматически, Запрещена (StartType). Класс ServiceProcessInstaller также используется при инсталляции службы, он вызывается программами установки, например InstallUtil.exe, при установке служебного приложения. Важным для дальнейшей работы службы свойством этого класса является свойство Account, указывающее от имени какой учетной записи (и, соответственно, с какими правами) будет функционировать служба. Если указать в качестве значения этого свойства User (альтернативами являютcя LocalSystem, LocalService, NetworkService), то при установке службы необходимо будет указать учетную запись и пароль.
После построения проекта службы создается сборка в виде exe-файла. Однако, его не удастся запустить как обычный exe-модуль. Службу необходимо зарегистрировать в системе с использованием утилиты installUtil.exe, входящей в состав .NET Framework SDK (C:\Windows\Microsoft .NET\Framework\{папка с версией}) .
Для установки службы необходимо выполнить команду


Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница