restarter.cmd
Код:
@echo off
REM Переменная WAITTIME задаёт (паузу в секундах+1)
SET WAITTIME=20
REM Останов службы
net stop "messenger">nul
REM Пауза
ping -n %WAITTIME% localhost>nul
REM Запуск службы
net start "messenger">nul
на примере службы сообщений (В русской версии можно применить "Служба сообщений" вместо messenger; соответственно, Messenger замени на имя своей службы).
Первый пинг проходит сразу, поэтому приходится ставить WAITTIME на 1 больше, чем требуемая пауза. Остальные пинги идут раз в секунду. Поскольку пингуется localhost, временем прохождения пинга можно пренебречь.
Решение гарантированно работоспособно под NT4/2000/XP/2003. В теории и под Vista, но думаю что только при отключённом UAC. Естественно, запускать надо от имени учётной записи, имеющей полномочия на остановку и запуск служб.
С некоторыми службами может не прокатить в силу активной самозащиты последних (антивирусы и т.п.).
Опять же есть службы, при отключении которых система аварийно завершает работу.
добавлено через 10 минут
P.S. ВАЖНО! Кодировка скрипта - CP866, она же ANSI DOS.
Иначе все русские символы будут обрабатываться неправильно.