23
июнь
2026
Скрипт для перезапуска службы в MS Windows
16:48

Скрипт для перезапуска службы в MS Windows

23 июнь 2026 16:48

Скрипт для перезапуска службы (для добавления в Планировщик заданий) в Windows.

В службе "Hasp Loader", которая загружает ключи для сетевой лицензии финансовой программы 1с периодически возникало сообщение об отсутствии сетевой лицензии. Решение, подсказанное службой поддержки 1с - перезапуск службы "Hasp Loader" раз в сутки, с помощью Планировщика заданий. Цитата: "У Hasp Loader заканчиваются "нулевые" лицензии, которые используются при входе". Задача в том, что нужно написать скрипт для остановки и запуска службы "Hasp Loader".

Ниже я привел текст разработанного мною скрипта на языке VBS (VB Shell), предназначенный для перезапуска службы с именем, указанным в переменной sName. Скрипт использует программирование WMI (Windows Management Instrumintation). Лицензия - GPL.

On Error Resume Next
sName="Hasp Loader"
Set objService = GetObject _
("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number  0 Then
    WScript.Echo Err.Number & ": " & Err.Description
    WScript.Quit
End If

If sName="" Then
    WScript.Echo "The service name is empty."
    WScript.Quit
End If

For Each objS In objService.ExecQuery _
("Select * FROM Win32_Service WHERE Name ='" & sName & "'" )
    Exit For
Next
If IsObject (objS) Then 
 WScript.Echo objS.Name & " - StopService()"
 ret = objS.StopService()
 DebugPrint ret

 WScript.Sleep 1500 ` 1,5s

 WScript.Echo objS.Name & " - StartService()"
 ret = objS.StartService()
 DebugPrint ret

Else
 WScript.Echo sName & " - service not found"
End If

Sub  DebugPrint(number)
Select Case number
   Case 0
      WScript.Echo "Done!"
   Case 1
      WScript.Echo "Error. Not supported"
   Case 2
      WScript.Echo "Error. No user rights"
   Case 3
      WScript.Echo "Error. Depends"
   Case 4
      WScript.Echo "Error. Wrong request"
   Case 5
      WScript.Echo "Error. Wrong state"
   Case 6
      WScript.Echo "Error. Not started"
   Case 7
      WScript.Echo "Error. Timed out"
   Case 8
      WScript.Echo "Error. Unknown failure"
   Case 9
      WScript.Echo "Error. Wrong path"
   Case 10
      WScript.Echo "Error. Already started"
   Case 11
      WScript.Echo "Error. DB is locked"
   Case 12
      WScript.Echo "Error. Dependency is deleted"
   Case 13
      WScript.Echo "Error. Dependency not found"
   Case 14
      WScript.Echo "Error. Disabled"
   Case 15
      WScript.Echo "Error. No authenticity"
   Case 16
      WScript.Echo "Error. Uninstalling"
   Case 17
      WScript.Echo "Error. No exec process"
   Case 18
      WScript.Echo "Error. Dependency is cycled"
   Case 19
      WScript.Echo "Error. Already started by this name"
   Case 20
      WScript.Echo "Error. Bad chars in name"
   Case 21
      WScript.Echo "Error. Bad parameters"
   Case 22
      WScript.Echo "Error. Bad account"
   Case 23
      WScript.Echo "Error. Service exists"
   Case 24
      WScript.Echo "Error. Service is paused"
End Select
End Sub

Запуск скрипта в командной строке Windows:

cscript.exe hasp.vbs

Запуск скрипта в Планировщике задач

  • Простая задача
  • Действие: cscript,exe
  • Параметр: //B hasp.vbs

Желательно указать полные пути к файлам, например: C:\Windows\system32\cscript.exe и C:\Windows\hasp.vbs
и назначить права только для Администратора, который будет перезапускать службу с помощью Планировщика задач.


Источники:


Перечень кодов возврата методов StopService() и StartService() приведен ниже:

0 Запрос принят.
1 Запрос не поддерживается.
2 У пользователя не было необходимого доступа.
3 Службу нельзя остановить, так как от нее зависят другие работающие службы.
4 Запрошенный управляющий код недопустим или неприемлем для данной службы.
5 Не удается отправить запрошенный управляющий код в службу, так как состояние службы (Win32_BaseService. Свойство State ) равно 0, 1 или 2.
6 Служба не запущена.
7 Служба не ответила на запрос запуска за отведенное время.
8 Неизвестный сбой при запуске службы.
9 Путь каталога к исполняемому файлу службы не найден.
10 Служба уже запущена.
11 База данных для добавления новой службы заблокирована.
12 Зависимость, на основе которого зависит эта служба, была удалена из системы.
13 Этой службе не удалось найти службу, которая необходима зависимой службе.
14 Эта служба была отключена в системе.
15 Эта служба не поддерживает проверку подлинности, необходимую для работы в системе.
16 Эта служба удаляется из системы.
17 Служба не имеет потока выполнения.
18 Служба имеет циклические зависимости при запуске.
19 Служба выполняется с тем же именем.
20 Имя службы содержит недопустимые символы.
21 Службе переданы недопустимые параметры.
22 Учетная запись, под которой выполняется эта служба, является недопустимой или не имеет разрешений для запуска службы.
23 Служба существует в базе данных доступных в системе служб.
24 Служба в данный момент приостановлена в системе.



Похожие публикации