Как создать службу windows 2003

Как создать службу windows 2003

Как создать новую службу в WindowsXP/2003/Windows server

Недавно вот столкнулся по моей работе с одной здесь необходимостью сделать новую службу в OS Windows Server 2003. И так, для того, ,чтобы это не забыть в будущем, то решил сейчас написать краткую заметку по данной теме.

И так, начнем создание новой службы в Windows Server 2003:

[-hide-]1. Скачаем пакет Windows Server 2003 Resource Kit Tools с сайта Microsoft. В данном пакете нам понадобятся 2 программы – instsrv.exe и srvany.exe.

2. Устанавливаем пакет. Создаём в корне диска С (либо на любом другом диске) новую папочку kit (название может быть любым). Скопируем туда из Programm Files, наши два файлика – instsrv.exe и srvany.exe – C:\Program Files\Windows Resource Kits\Tools.

3. Далее окрываем Пуск >> Выполнить… >> cmd

В окрывшейся командной строчеке пишем – C:\kit\instsrv.exe «Имя нашей новой службы» C:\kit\srvany.exe

В нашем случае имя службы «Test»

4. Опять окрываем Пуск >> Выполнить… >> regedit

Теперь нам здесь необходимо подправить реестр по следующему пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Test (где Test – имя нашей службы)

Далее, правой кнопкой мыши на Test >> Создать >> Раздел

Новый раздел переименуем в Parameters, далее щелкаем правой кнопкой мыши на Parameters >> Создать >> Строковый параметр

Раскрываем папочку Parameters и переименовываем Новый параметр в Application. Теперь двойной клик на Apllication и в поле Значение: Указываем путь до нашей новой службы.

5. Проверяем. Окрываем значок Службы и ищем нашу службу (Test) и стартуем ее.

6. Если вам здесь необходимо удалить службу, то открываем командную строчеку и вводим следующую команду —

Как создать службу windows 2003

Данный материал является зеркалом статьи сайта Заметки о WINDOWS с некоторыми примечаниями из личного опыта.

Иногда может потребоваться взять исполняемый файл и зарегистрировать его в качестве службы Windows. Для этого есть несколько способов. Два из них приведены ниже.

Для создания и службы из командной строки можно использовать программу SC (Sc.exe). SC представляет из себя утилиту командной строки, которая реализует вызовы ко всем функциям интерфейса прикладного программирования (API) управления службами Windows. С ее помощью можно производить любые действия со службами — просматривать состояние, управлять (запускать, останавливать и т.п.), изменять параметры, а также создавать новые службы.

При создании службы с помощью SC нет необходимости вручную создавать записи в реестре и затем перезагружать компьютер, чтобы обеспечить обновление базы данных диспетчером служб. Также SC позволяет указать имя удаленного компьютера, что дает возможность управлять службами как на локальном, так и на удаленном компьютере.

Для создания нового сервиса запускаем команду Sc create . Она создает запись службы в реестре и в базе данных диспетчера служб. Sc create имеет следующий синтаксис:

sc create [ServiceName] [binPath= ]

ServiceName — указывает имя, которое будет присвоено разделу службы в реестре. Имейте в виду, что это имя отличается от отображаемого имени службы (имени, которое отображается в оснастке «Services»);
binPath — указывает путь к исполняемому файлу службы.

Для примера создадим службу MyService, укажем отображаемое имя My New Service, зададим тип службы и поставим ее на авто-запуск:

Sc create MyService binPath=C:\MyService\MyService.exe DisplayName=″My New Service″ type=own start=auto

Затем откроем оснастку «Services» и посмотрим результат.

Изменять параметры уже созданной службы можно командой Sc config . Например, мне не понравилось отображаемое имя службы и я хочу его изменить:

Sc config MyService DisplayName=″My Service″

Ну и полностью удалить службу можно вот так:

Sc delete MyService

Примечание. Есть некоторые особенности использования утилиты sc. Например при создании сервиса в Windows XP необходимо ставить пробел перед аргументом, передаваемым параметру!

Если мы подадим команду:

C:\sc create Weblogic binPath=C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName=»WebLogic» type=share start=auto error=ignore

В ответ получим help по использованию sc без какого либо сообщения об ошибке:

Подаем ту же команду вставив пробелы после символа «=»:

C:\>sc create Weblogic binPath= C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName= «WebLogic» type= share start= auto error= ignore

Читайте также:  Как поменять pin windows 10

[SC] CreateService SUCCESS

Вот такая недокументированная особенность.

Так же необходимо внимательно относится к прочим параметрам. В случае приведенном ниже изменены значения параметров start и type:

[SC] CreateService FAILED 87:

и после двоеточия никаких пояснений.

Подробное значение параметров можно посмотреть здесь или здесь.

Для изменения параметров системной службы нужно ввести новые параметры командой:

Для остановки службы:

Для перезагрузки службы:

Если требуется определить, какие службы будут зависеть от данной службы, можно набратьsc enumpend

Теперь, чтобы увидеть, какие службы находятся в зависимости от службы сервера под названием lanmanserver, надо подать команду

sc enumdepend Lanmanserver

Запуск такой команды на моем тестовом сервере Windows 2003, например, показывает, что службы Netlogon, Dfs, а также службы браузера компьютера находятся в зависимости от службы сервера.

Для завершения и определения зависимостей сервера можно воспользоваться подкомандой qc, как показано ниже

sc qc Lanmanserver

Эта команда выдает девять строчек информации о службе, одна из которых DEPENDENCIES. При запуске этой команды выясняется, что сервер не зависит ни от каких служб. Чтобы узнать, какие службы имеют более одной зависимости, можно протестировать диспетчер на службе Netlogon. Мы увидим, что служба Netlogon для начала работы требует запуска служб и сервера, и Workstation.

Иногда зависимости бывают более сложными. Например, некоторые службы могут начать работу, только если запущена одна из трех других служб. Запуск всех трех необязателен, вполне достаточно одной. Можно проинструктировать Windows по поводу такой динамики, информируя систему о том, что данная служба находится в зависимости от группы служб. В системе Windows имеется целый ряд таких служб, как, например, SCSI CDROM Class, SCSI miniport, Parallel arbitrator, NetBIOSGroup, NDIS, а также службы первичного диска и многие другие. Все эти службы и драйверы можно увидеть в списке групп, набрав

sc query type= service?driver?all group=

Например, чтобы посмотреть все службы и драйверы в группе служб первичного диска, нужно набрать

sc query type= all group=

Названия групп значения не имеют. Можно добавлять службы в имеющиеся группы или создавать новые группы служб, добавив команду group= groupname в команду SC Create или используя SC Config для сохранения службы в какую-либо группу. Например, чтобы добавить службу Webimagemailer в новую группу под названием unimportant, надо набрать

sc config webimagemailer group= unimportant

Однако нельзя поместить службу или драйвер в более чем одну группу служб.

Кроме того, можно сделать так, чтобы не происходила загрузка службы Webimagemailer без необходимой группы служб. Чтобы определить фиктивную группу Webstartup, воспользуемся параметром depends= webstartup. Чтобы указать Windows, что Webstartup — это группа, а не еще одна служба, следует перед ее именем поставить знак «плюс». Например, для перенастройки службы Webimagemailer на зависимость от группы запуска Webstartup, надо набрать

sc config webimagemailer depends= +webstartup

Таким образом, мы выяснили, как использовать зависимости и группы для более детального управления порядком загрузки службы. И теперь никто не удивится, почему я был так доволен, когда несколько лет назад обнаружил диспетчер SC.

PowerShell может почти все, в том числе и управлять службами Windows. Создать новую службу можно с помощью командлета New-Service . Создадим такой же сервис, как и в предыдущем примере, только добавим к нему описание (Description):

New-Service -Name MyService -BinaryPathName C:\MyService\MyService.exe`
-DisplayName ″My New Service″ -Description ″Very Important Service . ″

Изменить параметры службы можно командлетом Set-Service :

Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual

В принципе PowerShell имеет примерно такой же функционал как и Sc.exe, разве что позволяет добавить описание. А вот для удаления служб в PS простого способа нет, придется воспользоваться вот такой конструкцией:

(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()

sc.exe создать sc.exe create

Создает подраздел и записи для службы в реестре и в базе данных диспетчера управления службами. Creates a subkey and entries for a service in the registry and in the Service Control Manager database.

Синтаксис Syntax

Параметры Parameters

Параметр Parameter Описание Description
Указывает имя удаленного сервера, на котором расположена служба. Specifies the name of the remote server on which the service is located. Имя должно использовать формат UNC (например, \ MyServer). The name must use the Universal Naming Convention (UNC) format (for example, \myserver). Чтобы запустить SC.exe локально, не используйте этот параметр. To run SC.exe locally, don’t use this parameter.
Указывает имя службы, возвращенное операцией жеткэйнаме . Specifies the service name returned by the getkeyname operation.
type= > Указывает тип службы. Specifies the service type. Эти способы могут быть следующими: The options include:
  • собственный — указывает службу, которая выполняется в собственном процессе. own — Specifies a service that runs in its own process. Он не предоставляет доступ к исполняемому файлу другим службам. It doesn’t share an executable file with other services. Это значение по умолчанию. This is the default value.
  • Share — указывает службу, которая выполняется как общий процесс. share — Specifies a service that runs as a shared process. Он использует исполняемый файл совместно с другими службами. It shares an executable file with other services.
  • kernel — указывает драйвер. kernel — Specifies a driver.
  • филесис — указывает драйвер файловой системы. filesys — Specifies a file system driver.
  • REC — указывает драйвер, распознаваемый файловой системой, который определяет файловые системы, используемые на компьютере. rec — Specifies a file system-recognized driver that identifies file systems used on the computer.
  • взаимодействие — указывает службу, которая может взаимодействовать с рабочим столом и получать входные данные от пользователей. interact — Specifies a service that can interact with the desktop, receiving input from users. Интерактивные службы должны запускаться под учетной записью LocalSystem. Interactive services must be run under the LocalSystem account. Этот тип должен использоваться в сочетании с Type = владеть или Type = Shared (например, Type = взаимодействиеType = владеет). This type must be used in conjunction with type= own or type= shared (for example, type= interacttype= own). При использовании типа = взаимодействие само по себе вызывает ошибку. Using type= interact by itself will generate an error.
start= Указывает тип запуска для службы. Specifies the start type for the service. Эти способы могут быть следующими: The options include:
  • Загрузка — указывает драйвер устройства, который загружается загрузчиком. boot — Specifies a device driver that is loaded by the boot loader.
  • система — указывает драйвер устройства, который запускается во время инициализации ядра. system — Specifies a device driver that is started during kernel initialization.
  • автоматически указывает службу, которая автоматически запускается при каждом перезапуске компьютера и выполняется, даже если никто из них не входит в систему. auto — Specifies a service that automatically starts each time the computer is restarted and runs even if no one logs on to the computer.
  • Demand — указывает службу, которая должна быть запущена вручную. demand — Specifies a service that must be started manually. Это значение по умолчанию, если Start = не задано. This is the default value if start= is not specified.
  • Disabled (отключено ) — указывает службу, которая не может быть запущена. disabled — Specifies a service that cannot be started. Чтобы запустить отключенную службу, измените тип запуска на другое значение. To start a disabled service, change the start type to some other value.
  • отложенный — автоматически указывает службу, которая запускается автоматически через некоторое время после запуска других автоматических служб. delayed-auto — Specifies a service that starts automatically a short time after other auto services are started.
error= Указывает серьезность ошибки, если служба не запускается при запуске компьютера. Specifies the severity of the error if the service fails to start when the computer is started. Эти способы могут быть следующими: The options include:
  • Обычная — указывает, что ошибка записывается в журнал и отображается окно сообщения, информирующее пользователя о том, что не удалось запустить службу. normal — Specifies that the error is logged and a message box is displayed, informing the user that a service has failed to start. Запуск будет продолжен. Startup will continue. Это параметр по умолчанию. This is the default setting.
  • серьезная — указывает, что ошибка регистрируется (по возможности). severe — Specifies that the error is logged (if possible). Компьютер пытается перезапуститься с последней удачной конфигурацией. The computer attempts to restart with the last-known good configuration. Это может привести к тому, что компьютер сможет перезапуститься, но служба по-прежнему может не запуститься. This could result in the computer being able to restart, but the service may still be unable to run.
  • критическая — указывает, что ошибка записывается в журнал (если возможно). critical — Specifies that the error is logged (if possible). Компьютер пытается перезапуститься с последней удачной конфигурацией. The computer attempts to restart with the last-known good configuration. Если последняя удачная конфигурация завершается сбоем, запуск также завершается сбоем, а процесс загрузки останавливается с ошибкой остановки. If the last-known good configuration fails, startup also fails, and the boot process halts with a Stop error.
  • Ignore — указывает, что ошибка записывается в журнал, и запуск продолжится. ignore — Specifies that the error is logged and startup continues. Пользователю не выдается уведомление, кроме записи ошибки в журнал событий. No notification is given to the user beyond recording the error in the Event Log.
binpath= Указывает путь к двоичному файлу службы. Specifies a path to the service binary file. Значение по умолчанию для BinPath =, и эта строка должна быть указана. There is no default for binpath=, and this string must be supplied.
group= Указывает имя группы, членом которой является эта служба. Specifies the name of the group of which this service is a member. Список групп хранится в реестре в подразделе хклм\систем\куррентконтролсет\контрол\сервицеграупордер . The list of groups is stored in the registry, in the HKLM\System\CurrentControlSet\Control\ServiceGroupOrder subkey. По умолчанию используется значение NULL. The default value is null.
tag= Указывает, следует ли получить TagID из вызова CreateService. Specifies whether or not to obtain a TagID from the CreateService call. Теги используются только для драйверов загрузки и запуска системы. Tags are used only for boot-start and system-start drivers.
depend= Указывает имена служб или групп, которые должны быть запущены перед этой службой. Specifies the names of services or groups that must start before this service. Имена разделяются косой чертой (/). The names are separated by forward slashes (/).
obj= <| > Указывает имя учетной записи, в которой будет выполняться служба, или задает имя объекта драйвера Windows, в котором будет выполняться драйвер. Specifies a name of an account in which a service will run, or specifies a name of the Windows driver object in which the driver will run. Значение по умолчанию — LocalSystem. The default setting is LocalSystem.
displayname= Указывает понятное имя для идентификации службы в программах пользовательского интерфейса. Specifies a friendly name for identifying the service in user interface programs. Например, имя подраздела одной конкретной службы — wuauserv, которое имеет более понятное отображаемое имя автоматическое обновление. For example, the subkey name of one particular service is wuauserv, which has a more friendly display name of Automatic Updates.
password=

Указывает пароль. Specifies a password. Это необходимо, если используется учетная запись, отличная от учетной записи LocalSystem. This is required if an account other than the LocalSystem account is used. /? /? Отображение справки в командной строке. Displays help at the command prompt.

Комментарии Remarks

Каждый параметр командной строки (параметр) должен включать знак равенства как часть имени параметра. Each command-line option (parameter) must include the equal sign as part of the option name.

Между параметром и его значением требуется пробел (например, Type = an). A space is required between an option and its value (for example, type= own. Если пространство не указано, операция завершается ошибкой. If the space is omitted, the operation fails.

Примеры Examples

Чтобы создать и зарегистрировать новый двоичный путь для службы невсервице , введите: To create and register a new binary path for the NewService service, type:

Читайте также:  Смена раскладки windows python
Оцените статью