Вы можете использовать инструмент Microsoft SC (Sc.exe), чтобы запросить состояние службы или даже создать или удалить ее.Вот статья об использовании этой команды: http://support.microsoft.com/kb/251192
Из окна командной строки (содержимое отредактировано для выделения):
C:\windows\system32>sc
DESCRIPTION:
SC is a command line program used for communicating with the
Service Control Manager and services.
USAGE:
sc <server> [command] [service name] <option1> <option2>...
The option <server> has the form "\\ServerName"
Further help on commands can be obtained by typing: "sc [command]"
Commands:
query-----------Queries the status for a service, or
enumerates the status for types of services.
queryex---------Queries the extended status for a service, or
enumerates the status for types of services.
start-----------Starts a service.
pause-----------Sends a PAUSE control request to a service.
continue--------Sends a CONTINUE control request to a service.
stop------------Sends a STOP request to a service.
delete----------Deletes a service (from the registry).
create----------Creates a service. (adds it to the registry).
Выполнение этой команды для запросаслужба, которая (A) существует и (B) не существует, приводит к:
(A)
C:\Windows\System32>sc query W32Time
SERVICE_NAME: W32Time
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 1077 (0x435)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
(B)
C:\Windows\System32>sc query nothere
[SC] EnumQueryServicesStatus:OpenService FAILED 1060:
The specified service does not exist as an installed service.
ИтакВы можете проверить существование службы, прежде чем пытаться удалить ее, используя следующее - (простите за отталкивающее использование оператора FOR, я не совсем уверен, как записать вывод команды sc в переменную или использоватьэто в выражении IF) -
set svcname=W32Time
set svc=exists
for /f "delims=" %%o in ('sc query %svcname% ^| find "FAIL"') do set svc=notexists
if "%svc%"=="exists" sc delete %svcname%