1.

Solve : Manager of Windows service's START_TYPE setting?

Answer»

Special thanks to all of you helping me to solve some problems while I was building this script.

Here is a script to manage (show, backup, restore, config) MS Windows service's START_TYPE setting.
There are 2 METHODS to config service's START_TYPE:

- a method BASED on a file Conf.LOG containing (for example):

Code: [Select]ServiceName1:auto
Service Name 2:auto
Service_Name3:demand
Service Name4:demand
ServiceNameMNO:disable
Service Name XYZ:disable
- a method based on 3 string variables (one for each START_TYPE VALUE), where service names are SEPARATED by "/":
Code: [Select]SET sAUTO=ServiceName1/Service Name 2
SET sDEMA=Service_Name3/Service Name4
SET sDISA=ServiceNameMNO/Service Name XYZ

Some web sites helping to build your own config:
for Vista
http://www.blackviper.com/WinVista/servicecfg.htm
http://www.tweakhound.com/vista/tweakguide/page_8.htm
http://www.speedyvista.com/servicesDetail.html
for XP
http://www.blackviper.com/WinXP/servicecfg.htm
http://www.tweakhound.com/xp/xptweaks/supertweaks6.htm


Any comment, improvement, will be appreciate.
I tested this script on Windows XP Pro SP2.
Thanks and regard.

Code: [Select]::------------------------------ MANAGER For Windows Service's START_TYPE - v1.0
@ECHO OFF &SETLOCAL &CD /D "%~DP1"
@SETLOCAL ENABLEDELAYEDEXPANSION
SET u=.\


:CHOI
ECHO.-------------------------------------------------
ECHO.MS Windows Service's START_TYPE MANAGER
ECHO.
ECHO. SHOW Current Services : 1
ECHO. BACKUP Service's START_TYPE : 2
ECHO. RESTORE Service's START_TYPE : 3
ECHO. CONFIG Service's START_TYPE based on a file : 4
ECHO. CONFIG Service's START_TYPE based on 3 vars : 5
ECHO.
SET Select=
SET Choice=
SET /P Select=----------------------- Select an action (1-5):
ECHO.
IF /i '%Select%'=='1' GOTO SHOW
IF /i '%Select%'=='2' GOTO BKUP
IF /i '%Select%'=='3' GOTO REST
IF /i '%Select%'=='4' GOTO CON1
IF /i '%Select%'=='5' GOTO CON2
IF /i '%Select%'=='' GOTO Fin
ECHO.ERROR: Invalid Choice "%Select%" &GOTO CHOI


:SHOW ::--------------------------------------- SHOW Service's NAME & START_TYPE
SET z=%u%\SrvSHOW.LOG
TYPE NUL>"%z%"
FOR /f "Tokens=1,2 Delims=:" %%r in ('"SC QUERY state= all"') DO (
IF /i "%%r"=="SERVICE_NAME" (ECHO%%s)
IF /i "%%r"=="DISPLAY_NAME" (ECHO. %%s&ECHO.-------------------)
)>>"%z%"
"%z%"
ECHO.&ECHO.1: Done&ECHO.&GOTO CHOI


:BKUP ::----------------------------- BACKUP Service's START_TYPE as a .CMD File
SET z=%u%\SrvBKUP.CMd
TYPE NUL>"%z%"
FOR /f "Tokens=1,2 Delims=:" %%r in ('"SC QUERY state= all"') DO (
IF /i "%%r"=="SERVICE_NAME" (Call :SUB1 %%s)
)>>"%z%"
TYPE "%z%"
ECHO.&ECHO.2: Done&ECHO.&GOTO CHOI


:REST ::------------------------------------------- RESTORE Service's START_TYPE
SET z=%u%\SrvBKUP.CMd
IF NOT EXIST "%z%" (ECHO.ERROR: MISSING File [%z%] &ECHO. &GOTO CHOI)
Call "%z%"
ECHO.----------------------- &ECHO.3: Done. Reboot Your PC &ECHO.&GOTO CHOI


:CON1 ::---------- CONFIG Service's START_TYPE Based on Customized File Conf.LOG
CD\
SET z=%u%\Conf.LOG
IF NOT EXIST "%z%" (ECHO.ERROR: MISSING File [%z%] &ECHO. &GOTO CHOI)
FOR /f "Tokens=1,2 Delims=:" %%r in ('TYPE "%z%"') DO (
SC CONFiG "%%r" Start= %%s
)
ECHO.----------------------- &ECHO.4: Done. Reboot Your PC &ECHO.&GOTO CHOI


:CON2 ::------------ CONFIG Service's START_TYPE Based on 3 Customized Variables
SET sAUTO=ServiceName1/Service Name 2
SET sDEMA=Service_Name3/Service Name4
SET sDISA=ServiceNameMNO/Service Name XYZ
::------------------------------------------------------------------------------
CD\
FOR %%s in ("%sAUTO:/=" "%") DO (SC CONFiG %%s Start= auto)
FOR %%s in ("%sDEMA:/=" "%") DO (SC CONFiG %%s Start= demand)
FOR %%s in ("%sDISA:/=" "%") DO (SC CONFiG %%s Start= disabled)
ECHO.----------------------- &ECHO.5: Done. Reboot Your PC &ECHO. &GOTO CHOI


:Fin
ECHO.END. BYE ..... &PING -n 2 LocalHost>Nul &EXIT


::---------------------------------------------- Sub Routine To Build SC Command
:SUB1
SET SrvcName="%*"
FOR /F "Tokens=1,3 Delims=: " %%a in ('"SC QC !SrvcName!"') DO (
IF /i "%%a"=="START_TYPE" (
IF /i "%%b"=="AUTO_START" (ECHO.SC CONFiG !SrvcName! Start= auto )
IF /i "%%b"=="DEMAND_START" (ECHO.SC CONFiG !SrvcName! Start= demand )
IF /i "%%b"=="DISABLED" (ECHO.SC CONFiG !SrvcName! Start= disabled)
)
)
GOTO :EOF
::______________________________________________________________________________



Discussion

No Comment Found