home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 October / PCWorld_2006-10_cd.bin / zabezpeceni / svc2kxp / svc2kxp.exe / svc2kxp.cmd
OS/2 REXX Batch file  |  2005-11-16  |  50KB  |  1,529 lines

  1. @echo off
  2. cls
  3. rem Copyright (C) 2003-05 Ansgar Wiechers & Torsten Mann
  4. rem Contact: admin@ntsvcfg.de
  5. rem 
  6. rem This program is free software; you can redistribute it and/or modify it under
  7. rem the terms of the GNU General Public License as published by the Free Software Foundation;
  8. rem either version 2 of the License, or (at your option) any later version.
  9. rem This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  10. rem without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. rem See the GNU General Public License for more details.
  12. rem
  13. rem You should have received a copy of the GNU General Public License along with this program;
  14. rem if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
  15. rem MA 02111-1307, USA. 
  16. echo.
  17. REM Tested on ... Windows XP Pro SP2
  18. REM NEW ... basic XP64 Support - Warning - Experimental!!
  19. REM Showing XP64-Message generated by script on XP32 systems fixed
  20.  
  21. setlocal
  22.  
  23. REM *** INIT_VARS ***
  24. set CHK_SVC=YES
  25. set XPSP2=FALSE
  26. set SERVER=FALSE
  27. set NT_SERVER_CHK=TRUE
  28.  
  29.  
  30. :START
  31. echo  "svc2kXp.cmd" v2.2_build6a (12.08.2005), published under GNU GPL
  32. echo  ================================================================
  33. set find=%SystemRoot%\System32\find.exe
  34. set regedit=%SystemRoot%\regedit.exe
  35. if not exist "%find%" goto :NOFIND
  36. if not exist "%regedit%" goto :NOREGEDIT
  37. if not "%1" == "%*" goto :SYNTAX
  38. if /I "%1"=="/?" goto :HELP
  39. if /I "%1"=="/help" goto :HELP
  40. if /I "%1"=="-h" goto :HELP
  41. if /I "%1"=="--help" goto :HELP
  42. if /I "%1"=="-?" goto :HELP
  43. if /I "%1"=="--?" goto :HELP
  44. if /I "%1"=="/fix" goto :FIX
  45. if /I "%1"=="/default" goto :RESTORE_DEFAULTS
  46. goto :VERSION
  47.  
  48. :SYNTAX
  49. echo.
  50. echo.
  51. echo  !!Syntax error!!
  52. echo  ________________
  53. echo  Es kann nur ein oder kein Parameter angegeben werden.
  54. echo.
  55. echo  Only one or no parameter allowed.
  56. goto :QUIT
  57.  
  58. :HELP
  59. echo.
  60. echo                                 -= Hilfe =-                           
  61. echo  Parameter:
  62. echo  /lan.......einige Dienste (fuer LAN-Betrieb) bleiben unveraendert.
  63. echo  /std.......Schliesst alle Ports, laesst aber einige Dienste unveraendert
  64. echo  /all.......Setzt ALLE Aenderungen nach www.kssysteme.de um (hardening)
  65. echo  /restore...Nimmt die letzten Aenderungen zurueck.
  66. echo  /reLAN.....Reaktiviert Dienste, dir fuer LAN-Betrieb benoetigt werden.
  67. echo.
  68. echo  Parameters:
  69. echo  /lan.......Some services needed for LAN-usage stay unchanged!
  70. echo  /std.......Closes all Ports, but some services stay unchanged
  71. echo  /all.......Changes all issues recommended by www.ntsvcfg.de ("hardening")
  72. echo  /restore...Undo last changes.
  73. echo  /reLAN.....Reactivates services required for LAN.
  74. echo  /default...Restoring factory service settings (before first time usage)
  75. echo.
  76. echo  example: svc2kxp.cmd /all
  77. echo.
  78. set /P CHS= [Press "G" for GNU GPL informations or "Q" for quit]?
  79. if /I "%CHS%"=="G" goto :GNU_GPL
  80. if /I "%CHS%"=="Q" goto :QUIT_EXT
  81. CLS
  82. goto :HELP
  83.  
  84. :GNU_GPL
  85. CLS
  86. echo  Informations about GNU-General Public License for "svc2kxp.cmd"
  87. echo  ===============================================================
  88. echo.
  89. echo  Copyright (C) 2003-05 Ansgar Wiechers, Torsten Mann
  90. echo  Contact: admin@ntsvcfg.de
  91. echo. 
  92. echo  This program is free software; you can redistribute it and/or modify it under
  93. echo  the terms of the GNU General Public License as published by the Free Software
  94. echo  Foundation; either version 2 of the License, or (at your option) any later 
  95. echo  version. This program is distributed in the hope that it will be useful, but
  96. echo  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  97. echo  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  98. echo  details.
  99. echo.
  100. echo  You should have received a copy of the GNU General Public License along with 
  101. echo  this program; if not, write to the:
  102. echo.
  103. echo  Free Software Foundation, Inc.
  104. echo  59 Temple Place, Suite 330 
  105. echo  Boston, MA 02111-1307, USA.
  106. echo.
  107. set /P CHS= [Press "H" for help or "Q" for quit]?
  108. CLS
  109. if /I "%CHS%"=="H" goto :HELP
  110. if /I "%CHS%"=="Q" goto :QUIT_EXT
  111. goto GNU_GPL
  112.  
  113. :VERSION
  114. echo  Checking system version ...
  115.  
  116.  
  117. if /I "%NT_SERVER_CHK%"=="FALSE" goto :SKIP_NT_SERVER_CHK
  118. REM Checking for running server version
  119.     "%regedit%" /e "%TEMP%\~svr.txt" "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions"
  120.          type "%TEMP%\~svr.txt"|"%find%" /i "Server" >NUL
  121.         if not errorlevel 1 set SERVER=TRUE
  122.          type "%TEMP%\~svr.txt"|"%find%" /i "LanMan" >NUL
  123.         if not errorlevel 1 set SERVER=TRUE
  124.         if exist "%TEMP%\~svr.txt" del /F /Q "%TEMP%\~svr.txt"
  125.         if /I "%SERVER%"=="TRUE" goto :NTSERVER
  126.  
  127.  
  128. :SKIP_NT_SERVER_CHK
  129.  
  130. ver | "%find%"  /i "Windows 2000" > nul
  131. if not errorlevel 1 goto :OS2K
  132.  
  133. ver | "%find%"  /i "Windows XP" > nul
  134. if not errorlevel 1 goto :OSXP
  135.  
  136. ver | "%find%"  /i "Microsoft Windows [Version 5.2.3790]" > nul
  137. if not errorlevel 1 goto :OSXP64
  138.  
  139. echo  !!Failed!!
  140. echo  __________
  141. echo.
  142. echo  Dieses Script ist nur unter Windows 2000 oder XP lauffaehig!
  143. echo.
  144. echo  This script works only on Windows 2000/XP machines!
  145. echo.
  146. goto :QUIT
  147.  
  148. :NOFIND
  149. echo.
  150. echo  !!Failed!!
  151. echo  __________
  152. echo.
  153. echo  Leider konnte folgende Datei nicht gefunden werden:
  154. echo. 
  155. echo  Sorry, but following file is missing:
  156. echo.
  157. echo.
  158. echo  # %SystemRoot%\System32\FIND.EXE
  159. echo.
  160. echo. 
  161. goto :QUIT
  162.  
  163. :NOREGEDIT
  164. echo.
  165. echo  !!Failed!!
  166. echo  __________
  167. echo.
  168. echo  Leider konnte folgende Datei nicht gefunden werden:
  169. echo. 
  170. echo  Sorry, but following file is missing:
  171. echo.
  172. echo.
  173. echo  # %SystemRoot%\REGEDIT.EXE
  174. echo.
  175. echo. 
  176. goto :QUIT
  177.  
  178. :NTSERVER
  179. echo.
  180. echo  !!Failed!!
  181. echo  __________
  182. echo.
  183. echo  Dieses Script unterstuetzt keine NT Server Versionen!
  184. echo.
  185. echo  This script doesn't support NT server versions!
  186. echo.
  187. goto :QUIT
  188.  
  189.  
  190. :OS2K
  191. rem Specific OS Detection I
  192. set SYSTEM=2k
  193.  
  194. rem Testing for XP ServicePacks
  195.     
  196.     "%regedit%" /e "%TEMP%\~svclist.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
  197.     type "%TEMP%\~svclist.txt"|"%find%" /i "Service Pack 4" >NUL
  198.     if errorlevel==1 (
  199.         
  200.           type "%TEMP%\~svclist.txt"|"%find%" /i "Service Pack 3" >NUL
  201.           if errorlevel==1 (
  202.  
  203.             type "%TEMP%\~svclist.txt"|"%find%" /i "Service Pack 2" >NUL
  204.               if errorlevel==1 (
  205.         
  206.                 type "%TEMP%\~svclist.txt"|"%find%" /i "Service Pack 1" >NUL
  207.                 if errorlevel==1 (
  208.             
  209.                     echo  !Windows 2000 [no or unknown Service Pack] detected!
  210.                     goto NO_2KSP
  211.                     )
  212.  
  213.                 echo  !Windows 2000 [Service Pack 1] detected!
  214.                   goto :NO_2KSP
  215.                 )
  216.  
  217.  
  218.             echo  !Windows 2000 [Service Pack 2] detected!
  219.               goto :NO_2KSP
  220.             )
  221.  
  222.  
  223.         echo  !Windows 2000 [Service Pack 3] detected!
  224.         goto :NO_2KSP
  225.         )
  226.  
  227.  
  228.     echo  !Windows 2000 [Service Pack 4] detected!
  229.     goto :NO_2KSP
  230.  
  231. :NO_2kSP
  232. if exist "%TEMP%\~svclist.txt" del /F /Q "%TEMP%\~svclist.txt"
  233. goto :CONTINUE
  234.  
  235.  
  236. :OSXP
  237. rem Specific OS detection II
  238. set SYSTEM=xp
  239. rem Testing for XP ServicePack 2
  240.  
  241.     "%regedit%" /e "%TEMP%\~svclist.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
  242.     type "%TEMP%\~svclist.txt"|"%find%" /i "Service Pack 2" >NUL
  243.     if errorlevel==1 (
  244.         
  245.           type "%TEMP%\~svclist.txt"|"%find%" /i "Service Pack 1" >NUL
  246.           if errorlevel==1 (
  247.             
  248.             SET XPSP2=FALSE
  249.             echo  !Windows XP [no or unknown Service Pack] detected!
  250.             goto NO_XPSP
  251.             )
  252.         
  253.         SET XPSP2=FALSE
  254.           echo  !Windows XP [Service Pack 1] detected!
  255.           goto :NO_XPSP
  256.         )
  257.  
  258.     SET XPSP2=TRUE
  259.     echo  !Windows XP [ServicePack 2] detected!
  260.     goto :NO_XPSP
  261.  
  262. :OSXP64
  263. rem Specific OS detection II
  264. set SYSTEM=xp
  265. rem Testing for XP ServicePack 2
  266.  
  267.     "%regedit%" /e "%TEMP%\~svclist.txt" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
  268.     type "%TEMP%\~svclist.txt"|"%find%" /i "Service Pack 2" >NUL
  269.     if errorlevel==1 (
  270.         
  271.           type "%TEMP%\~svclist.txt"|"%find%" /i "Service Pack 1" >NUL
  272.           if errorlevel==1 (
  273.             
  274.             SET XPSP2=FALSE
  275.             echo  !EXPERIMENTAL! Windows XP64 [no or unknown Service Pack] detected!
  276.             goto NO_XPSP
  277.             )
  278.         
  279.         SET XPSP2=FALSE
  280.           echo  !EXPERIMENTAL! Windows XP64 [Service Pack 1] detected!
  281.           goto :NO_XPSP
  282.         )
  283.  
  284.     SET XPSP2=TRUE
  285.     echo  !EXPERIMENTAL! Windows XP64 [ServicePack 2] detected!
  286.     goto :NO_XPSP
  287.  
  288.  
  289. :NO_XPSP
  290. if exist "%TEMP%\~svclist.txt" del /F /Q "%TEMP%\~svclist.txt"
  291. goto :CONTINUE
  292.  
  293.  
  294. :CONTINUE
  295.  
  296. REM Creating subdirectory "ntsvcfg" in userprofile if necessary
  297. if not exist "%USERPROFILE%\ntsvcfg\*.*" mkdir "%USERPROFILE%\ntsvcfg"
  298.  
  299. REM Moving old script backup files to ...\%USERNAME%\ntsvcfg :
  300.     if exist "%USERPROFILE%\dcom.reg" move /Y "%USERPROFILE%\dcom.reg" "%USERPROFILE%\ntsvcfg\dcom.reg"
  301.     if exist "%USERPROFILE%\dcomp.reg" move /Y "%USERPROFILE%\dcomp.reg" "%USERPROFILE%\ntsvcfg\dcomp.reg"
  302.     if exist "%USERPROFILE%\services.reg" move /Y "%USERPROFILE%\services.reg" "%USERPROFILE%\ntsvcfg\services.reg"
  303.     if exist "%USERPROFILE%\current_services_config.reg" move /Y "%USERPROFILE%\current_services_config.reg" "%USERPROFILE%\ntsvcfg\current_services_config.reg"
  304.     if exist "%USERPROFILE%\smb.reg" move /Y "%USERPROFILE%\smb.reg" "%USERPROFILE%\ntsvcfg\smb.reg"
  305.     if exist "%USERPROFILE%\FPRINT.REF" move /Y "%USERPROFILE%\FPRINT.REF" "%USERPROFILE%\ntsvcfg\FPRINT.REF"
  306.     if exist "%USERPROFILE%\handler_aim.reg" move /Y "%USERPROFILE%\handler_aim.reg" "%USERPROFILE%\ntsvcfg\handler_aim.reg"
  307.     if exist "%USERPROFILE%\handler_gopher.reg" move /Y "%USERPROFILE%\handler_gopher.reg" "%USERPROFILE%\ntsvcfg\handler_gopher.reg"
  308.     if exist "%USERPROFILE%\handler_telnet.reg" move /Y "%USERPROFILE%\handler_telnet.reg" "%USERPROFILE%\ntsvcfg\handler_telnet.reg"
  309.     if exist "%USERPROFILE%\services.reg.default" move /Y "%USERPROFILE%\services.reg.default" "%USERPROFILE%\ntsvcfg\services.reg.default"
  310.     if exist "%USERPROFILE%\dcom.reg.default" move /Y "%USERPROFILE%\dcom.reg.default" "%USERPROFILE%\ntsvcfg\dcom.reg.default"
  311.     if exist "%USERPROFILE%\dcomp.reg.default" move /Y "%USERPROFILE%\dcomp.reg.default" "%USERPROFILE%\ntsvcfg\dcomp.reg.default"
  312.     if exist "%USERPROFILE%\smb.reg.default" move /Y "%USERPROFILE%\smb.reg.default" "%USERPROFILE%\ntsvcfg\smb.reg.default"
  313.     if exist "%USERPROFILE%\handler_aim.reg.default" move /Y "%USERPROFILE%\handler_aim.reg.default" "%USERPROFILE%\ntsvcfg\handler_aim.reg.default"
  314.     if exist "%USERPROFILE%\handler_gopher.reg.default" move /Y "%USERPROFILE%\handler_gopher.reg.default" "%USERPROFILE%\ntsvcfg\handler_gopher.reg.default"
  315.     if exist "%USERPROFILE%\handler_telnet.reg.default" move /Y "%USERPROFILE%\handler_telnet.reg.default" "%USERPROFILE%\ntsvcfg\handler_telnet.reg.default"
  316.  
  317.  
  318. REM *****Declarations*****
  319. set SELECT="no"
  320. set SVC_BAK=%USERPROFILE%\ntsvcfg\services.reg
  321. set SVC_SAV=%USERPROFILE%\ntsvcfg\current_services_config.reg
  322. set DCOM_BAK=%USERPROFILE%\ntsvcfg\dcom.reg
  323. set DCOMP_BAK=%USERPROFILE%\ntsvcfg\dcomp.reg
  324. set SMB_BAK=%USERPROFILE%\ntsvcfg\smb.reg
  325. set DCOM_TMP=%TEMP%\dcomoff.reg
  326. set DCOMP_TMP=%TEMP%\dcompoff.reg
  327. set SMB_TMP=%TEMP%\smboff.reg
  328. set FPRINT=%USERPROFILE%\ntsvcfg\FPRINT.REF
  329. set HANDLER1=%USERPROFILE%\ntsvcfg\handler_aim.reg
  330. set HANDLER2=%USERPROFILE%\ntsvcfg\handler_gopher.reg
  331. set HANDLER3=%USERPROFILE%\ntsvcfg\handler_telnet.reg
  332. set NB_TMP=%TEMP%\nb_off.vbs
  333. set srctmp=%USERPROFILE%\~srcreate.vbs
  334.  
  335. REM *****Options*****
  336. set SCHEDULER_ENABLED=NO
  337. set UseXPSysRestore=YES
  338. set RESTORE=NO
  339. set SVC_MOD=NO
  340. set USE_FPRINT=YES
  341. set Deactivate_NetBIOS=YES
  342. set RESTORE_MODE=2
  343.  
  344. REM *****APP_PATHs******
  345. set NET=%SystemRoot%\system32\net.exe
  346. set SC=%SystemRoot%\system32\sc.exe
  347. set FC=%SystemRoot%\system32\fc.exe
  348. set IPCONFIG=%SystemRoot%\system32\ipconfig.exe
  349.  
  350.  
  351. echo  Checking available permissions: [local], please wait ...
  352. "%net%" user "%USERNAME%" 2> nul | "%find%"  /i "admin" | "%find%"  /i /v "name" > nul
  353. if errorlevel 1 (
  354.     echo     "         "          "     : [domain], please wait ...
  355.     "%net%" user "%USERNAME%" /domain 2> nul | "%find%"  /i "admin" | "%find%"  /i /v "name" > nul
  356.     if errorlevel 1 (
  357.         echo.
  358.         echo  Failed!
  359.         echo  __________
  360.         echo  Leider verfuegen Sie nicht ueber die erforderlichen Rechte!
  361.         echo  Melden Sie sich bitte als Administrator an.
  362.         echo.
  363.         echo  Sorry but you don't have the permissions required for this task.
  364.         echo  Please login as Administrator.
  365.         echo.
  366.         goto :END
  367.         )
  368.     )
  369.  
  370. set IMPORT_OLD_FILES=FALSE
  371. rem searching for sc.exe
  372. if not exist "%FPRINT%" echo  Checking for presence of SC.EXE ...
  373. "%sc%" qc > nul 2>&1
  374. if errorlevel 1 (
  375.     echo  !!Failed!!
  376.     echo  __________
  377.     echo  Die notwendige Datei SC.EXE konnte leider nicht unter
  378.     echo  [%SystemRoot%\SYSTEM32\] gefunden werden.
  379.     echo  Bitte laden Sie sich diese Datei von der unten genannten Adresse herunter:
  380.     echo.
  381.     echo  SC.EXE couldn't be found in [%SystemRoot%\SYSTEM32\]. 
  382.     echo  Please download it from following location:
  383.     echo.
  384.     echo.
  385.     echo            -= ftp://ftp.microsoft.com/reskit/win2000/sc.zip =-
  386.     echo. 
  387.     echo                Self-installing SC.EXE
  388.     echo                ======================
  389.     echo  svx2kxp.cmd kann versuchen, die notwendige Datei selbst zu installieren.
  390.     echo  Hierzu benoetigen Sie eine bestehende Internetverbindung. 
  391.     echo.
  392.     echo  svc2kxp.cmd may try to download the required file SC.EXE itself if an 
  393.     echo  active internet connection exists. 
  394.     goto :SC_DOWNLOAD
  395.     )
  396.  
  397.  
  398. if /I "%1"=="/all" (
  399.     set SELECT="/all"
  400.     goto :SKIP_MENUE
  401.     )
  402.  
  403. if /I "%1"=="/relan" (
  404.     set SELECT="/relan"
  405.     goto :SKIP_MENUE
  406.     )
  407.  
  408. if /I "%1"=="/std" (
  409.     set SELECT="/std"
  410.     goto :SKIP_MENUE
  411.     )
  412.  
  413.  
  414. rem checking for modified services
  415. if /I %CHK_SVC%==YES (
  416.     if /I %USE_FPRINT%==YES (
  417.         if exist "%FPRINT%" (
  418.             rem Creating fingerprint of current service settings...        
  419.             if exist "%USERPROFILE%\svc2cmp.sav" del /F /Q "%USERPROFILE%\svc2cmp.sav"
  420.             "%sc%" query type= service state= all bufsize= 8192 | %FIND% "SERVICE_NAME" >%TEMP%\~svclist.txt
  421.             for /F "tokens=1*" %%a in (%TEMP%\~svclist.txt) do (
  422.                 echo %%b >>"%USERPROFILE%\svc2cmp.sav"
  423.                 "%sc%" query "%%b" | %FIND% "STATE" >>"%USERPROFILE%\svc2cmp.sav"
  424.                 "%sc%" qc "%%b" | %FIND% "DISPLAY_NAME" >>"%USERPROFILE%\svc2cmp.sav"
  425.                 "%SC%" qc "%%b" | %FIND% "START_TYPE" >>"%USERPROFILE%\svc2cmp.sav"
  426.                 echo. >> "%USERPROFILE%\svc2cmp.sav" 
  427.                 )
  428.             del "%TEMP%\~svclist.txt"    
  429.  
  430.  
  431.             "%FC%" "%FPRINT%" "%USERPROFILE%\svc2cmp.sav" >NUL
  432.             if errorlevel 1 goto :DIFF
  433.             goto OK
  434.  
  435.             :DIFF
  436.             echo  Checking for modified services ... failed-services maybe modified! [E]valuate
  437.             set SVC_MOD=YES
  438.             goto :MOD_END
  439.  
  440.             :OK
  441.             echo  Checking for modified services ... OK
  442.             set SVC_MOD=NO
  443.             if exist "%USERPROFILE%\svc2cmp.sav" del /F /Q "%USERPROFILE%\svc2cmp.sav"
  444.             goto :MOD_END
  445.         
  446.             :MOD_END
  447.             REM
  448.                 )
  449.         )
  450.     )
  451. set CHK_SVC=NO
  452.  
  453.  
  454. if /I "%1"=="/restore" goto :RESTORE
  455.  
  456.  
  457. :MENUE
  458. if /I "%1"=="/lan" goto :SKIP_MENUE
  459. echo.
  460. echo                            -= Auswahl / Overview =-
  461. echo.
  462. echo  Bitte waehlen sie einen Punkt aus, den sie ausfuehren moechten:
  463. echo.
  464. echo  (1) LAN:       Benoetigte Dienste fuer LAN-Betrieb werden nicht veraendert.
  465. echo  (2) Standard:  Schliesst alle Ports, aber einige Dienste bleiben unveraendert.
  466. echo  (3) ALL:       Setzt alle Vorschlaege nach www.ntsvcfg.de um.
  467. echo  (4) Restore:   Nimmt die zuletzt vorgenommenen Aenderungen zurueck.
  468. echo  ______________________________________________________________________________
  469. echo.
  470. echo  Please choose one task you want to do:
  471. echo.
  472. echo  (1) LAN:       Some services needed for LAN-usage stay unchanged
  473. echo  (2) Standard:  Close ports but some services stay unchanged
  474. echo  (3) ALL:       Making all changes described at www.ntsvcfg.de (hardening)
  475. echo  (4) restore:   Restores last changes made.
  476. echo.
  477. set /P CHS= Bitte waehlen Sie/Please choose: [1],[2],[3],[4], [M]ore options or [Q]uit?
  478.  
  479. if /I "%CHS%"=="1" (
  480.     set SELECT="/lan"
  481.     goto :SKIP_MENUE
  482.     )
  483.  
  484. if /I "%CHS%"=="2" (
  485.     set SELECT="/std"
  486.     goto :SKIP_MENUE
  487.     )
  488.  
  489. if /I "%CHS%"=="3" (
  490.     set SELECT="/all"
  491.     goto :SKIP_MENUE
  492.     )
  493.  
  494. if /I "%CHS%"=="4" goto :RESTORE
  495. if /I "%CHS%"=="R" goto :RESTORE
  496. if /I "%CHS%"=="M" goto :MORE_OPTIONS
  497. if /I "%SVC_MOD%"=="YES" if /I "%CHS%"=="E" goto :EVALUATE_SERVICES
  498. if /I "%CHS%"=="G" goto :CREATING_NEW_FINGERPRINT
  499. if /I "%CHS%"=="Q" goto :QUIT
  500. cls
  501. goto :START
  502.  
  503.  
  504. :SKIP_MENUE
  505.  
  506.  
  507.  
  508. rem Checking if old restorefiles exists.
  509. rem if it is so old files will be restored before new changes
  510. if not exist "%SVC_BAK%" goto :NO_RESTORE
  511. if /I %RESTORE_MODE%==3 goto :NO_RESTORE
  512. if /I %RESTORE_MODE%==4 goto :NO_RESTORE
  513. set RESTORE=YES
  514. echo.
  515. echo  _______________________________________________________________________
  516. echo.
  517. echo  [Selected Restore Mode: %RESTORE_MODE%]
  518. echo.
  519. echo  # Achtung: Alte Sicherungsdateien gefunden!
  520. echo.
  521. echo     "Svc2kXp.cmd" wurde schon einmal ausgefuehrt. Damit neue Aenderungen 
  522. echo     korrekt durchgefuehrt werden koennen, werden die Sicherungsdateien 
  523. echo     eingespielt.
  524. echo.
  525. echo.
  526. echo    Attention: old restore-files found!
  527. echo.
  528. echo     This program runs not for the first time. To apply all new changes 
  529. echo     correctly old restore files will used to get an definite state.
  530. echo.
  531. echo.
  532. echo  # Starting restore ...
  533. goto RESTORE_EXT
  534.  
  535.  
  536.  
  537. :NO_RESTORE
  538. rem query if taskplaner should run
  539. if /I "%SYSTEM%"=="2k" goto :SKIP_SQUERY
  540. if /I "%SYSTEM%"=="xp" (
  541.     if /I %SELECT%=="" goto :SKIP_SQUERY
  542.     if /I %SELECT%=="/all" goto :SKIP_SQUERY
  543.     if /I %XPSP2%==True (
  544.         set SCHEDULER_ENABLED=YES
  545.         goto :SKIP_SQUERY
  546.         )
  547.  
  548.     )
  549.  
  550.  
  551. echo.
  552. echo.
  553. echo  Rueckfrage / Query
  554. echo  ==================
  555. echo.
  556. echo  Soll der Dienst "Taskplaner" beendet werden?
  557. echo. 
  558. echo  Wenn sie zeitgesteuerten Aufgaben [z.B. Antiviren-Updates] oder die automati-
  559. echo  sche Erstellung von Systemwiederherstellungspunkten nicht benoetigen, druecken
  560. echo  Sie eine BELIEBIGE TASTE, um auch Port 135 [RPC] sowie Port 1025 [Taskplaner]
  561. echo  zu schliessen [empfohlen!]. Andernfalls druecken Sie "N"!
  562. echo.
  563. echo.
  564. echo  Should the "scheduler service" be disabled?
  565. echo.
  566. echo  If you have time-controlled tasks [i.e. AV-Updates] or you will not set
  567. echo  automatic system restore points press ANY KEY TO CONTINUE to close port 135
  568. echo  [RPC] and port 1025 [scheduler] instantly. Otherwise press "N"
  569. echo  ___________________________________________
  570. echo.
  571. set /P UNDO= Taskplaner beenden - Close scheduler [y/n]?
  572. if /I "%UNDO%"=="n" set SCHEDULER_ENABLED=YES
  573.  
  574.  
  575.  
  576. :SKIP_SQUERY
  577.  
  578. if not exist "%SVC_BAK%.default" (
  579.     echo.
  580.     echo  Creating backup of defaults ...
  581.     "%regedit%" /e "%SVC_BAK%.default" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
  582.     "%regedit%" /e "%DCOM_BAK%.default" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole
  583.     "%regedit%" /e "%DCOMP_BAK%.default" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc
  584.     "%regedit%" /e "%SMB_BAK%.default" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters
  585.     "%regedit%" /e "%HANDLER1%.default" HKEY_CLASSES_ROOT\AIM
  586.     "%regedit%" /e "%HANDLER2%.default" HKEY_CLASSES_ROOT\gopher
  587.     "%regedit%" /e "%HANDLER3%.default" HKEY_CLASSES_ROOT\telnet
  588.     echo                             ... done.
  589.     )
  590.  
  591. if exist "%SVC_BAK%" (
  592.     if /I %RESTORE_MODE%==2 goto :SKIP_SAVING
  593.     if /I %RESTORE_MODE%==4 goto :SKIP_SAVING
  594.     )
  595.  
  596. rem saving registry settings
  597. echo  _________________________________________________________________________
  598. echo.
  599. echo  [Selected Restore Mode: %RESTORE_MODE%]
  600. echo.
  601. echo     Saving services settings to 
  602. echo       %SVC_BAK% ...
  603. "%regedit%" /e "%SVC_BAK%" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
  604. echo     Saving DCOM settings to 
  605. echo       %DCOM_BAK% ...
  606. "%regedit%" /e "%DCOM_BAK%" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole
  607. echo     Saving DCOM standard protocols settings to 
  608. echo       %DCOMP_BAK% ...
  609. "%regedit%" /e "%DCOMP_BAK%" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc
  610. echo     Saving SMB settings to
  611. echo       %SMB_BAK%
  612. "%regedit%" /e "%SMB_BAK%" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters
  613. echo     Saving URL-Handler [AIM, GOPHER, TELNET] to
  614. echo       %HANDLER1%
  615. "%regedit%" /e "%HANDLER1%" HKEY_CLASSES_ROOT\AIM
  616. echo       %HANDLER2%
  617. "%regedit%" /e "%HANDLER2%" HKEY_CLASSES_ROOT\gopher
  618. echo       %HANDLER3%
  619. "%regedit%" /e "%HANDLER3%" HKEY_CLASSES_ROOT\telnet
  620. echo.
  621.  
  622. echo  All done.
  623. echo  ___________________________________________
  624. echo.
  625.  
  626.  
  627. :SKIP_SAVING
  628.  
  629. if /I "%SYSTEM%"=="xp" ( 
  630.     if /I %UseXPSysRestore%==YES (
  631.         goto :XPSYSRESTORE
  632.         )
  633.     )
  634. :XPSYSRESTORE_DONE
  635.  
  636. rem reconfigure services
  637. rem startup: demand
  638. echo.
  639. echo  Setting services to "demand" ...
  640.  
  641. echo.
  642. echo  Checking DHCP ...
  643. "%ipconfig%" -all | "%find%"  /i "Lease" > nul
  644. if errorlevel 1 (
  645.     rem trying other method for DHCP
  646.     "%ipconfig%" -all | "%find%"  /i "DHCP-Server" > nul
  647.     if errorlevel 1 (
  648.     echo                ... no active DHCP found.
  649.     echo.
  650.       "%sc%" config DHCP start= demand
  651.       goto :SKIP_DHCP
  652.     )
  653. )
  654. echo  ... DHCP active, status of service will NOT be changed!
  655. echo.
  656.  
  657. :SKIP_DHCP
  658. "%sc%" config dmadmin start= demand
  659. "%sc%" config DNSCache start= demand
  660. "%sc%" config mnmsrvc start= demand
  661. "%sc%" config MSIServer start= demand
  662. "%sc%" config NetDDE start= demand
  663. "%sc%" config NetDDEdsdm start= demand
  664. "%sc%" config Netman start= demand
  665. "%sc%" config NTLMSsp start= demand
  666. "%sc%" config NtmsSvc start= demand
  667. "%sc%" config PolicyAgent start= demand
  668. "%sc%" config RASAuto start= demand
  669. "%sc%" config RASMan start= demand
  670. "%sc%" config RSVP start= demand
  671. "%sc%" config Scardsvr start= demand
  672.  
  673. "%sc%" query ScardDrv | "%find%"  /i "OpenService FAILED" >NUL
  674. if errorlevel 1 "%sc%" config ScardDrv start= demand  
  675.  
  676. if /I %XPSP2%==True (
  677.     rem If XP SP2 is installed there are less changes to XP-ICF
  678.     if /I %SELECT%=="/std" goto :SKIP_FIREWALL 
  679.     )
  680. "%sc%" config SharedAccess start= demand
  681.  
  682. :SKIP_FIREWALL
  683. "%sc%" config Sysmonlog start= demand
  684. "%sc%" config TAPISrv start= demand
  685. "%sc%" config TrkWks start= demand
  686. "%sc%" config UPS start= demand
  687. "%sc%" config W32Time start= demand
  688. "%sc%" config WMI start= demand
  689.  
  690. if /I %SELECT%=="/all" (
  691.     "%sc%" config SamSs start= demand
  692.     "%sc%" config LmHosts start= demand
  693.     "%sc%" config Winmgmt start= demand
  694.     )
  695.  
  696. if /I "%SYSTEM%"=="2k" (
  697.     "%sc%" config AppMgmt start= demand
  698.     "%sc%" config Browser start= demand
  699.     "%sc%" config clipsrv start= demand
  700.     "%sc%" config EventSystem start= demand
  701.     "%sc%" config Fax start= demand
  702.     "%sc%" config netlogon start= demand
  703.     "%sc%" config RPCLocator start= demand
  704.     "%sc%" config Utilman start= demand
  705.     if /I %SELECT%=="/all" (
  706.         "%sc%" config seclogon start= demand
  707.         "%sc%" config RPCSs start= demand
  708.         "%sc%" config lanmanServer start= demand
  709.         )
  710.     )
  711.  
  712.  
  713. if /I "%SYSTEM%"=="xp" (
  714.     "%sc%" config ALG start= demand
  715.     "%sc%" config FastUserSwitchingCompatibility start= demand
  716.     "%sc%" config helpsvc start= demand
  717.     "%sc%" config ImapiService start= demand
  718.     "%sc%" config Nla start= demand
  719.     "%sc%" config RdSessMgr start= demand
  720.     "%sc%" config seclogon start= demand
  721.     "%sc%" config stisvc start= demand
  722.     "%sc%" config SwPrv start= demand
  723.     "%sc%" config TermService start= demand
  724.     "%sc%" config upnphost start= demand
  725.     "%sc%" config VSS start= demand
  726.  
  727.     "%sc%" query WmdmPmSp | "%find%"  /i "OpenService FAILED" >NUL
  728.     if errorlevel 1 "%sc%" config WmdmPmSp start= demand  
  729.  
  730.     "%sc%" config WmiApSrv start= demand
  731.     rem Wireless Zero Configuration - fuer WLAN-Verbindungen notwendig.
  732.     rem Falls erforderlich auf AUTO stellen.
  733.     rem "%sc%" config WZCSVC start= demand
  734.     )
  735. echo.
  736.  
  737.  
  738.  
  739.  
  740. rem startup: auto
  741. echo  Setting services to "auto" ...
  742. "%sc%" config dmserver start= auto
  743. "%sc%" config eventlog start= auto
  744. "%sc%" config PlugPlay start= auto
  745. "%sc%" config ProtectedStorage start= auto
  746. "%sc%" config sens start= auto
  747. "%sc%" config spooler start= auto
  748.  
  749. if /I "%SYSTEM%"=="2k" (
  750.     "%sc%" config lanmanworkstation start= auto
  751.     "%sc%" config alerter start= auto
  752.     )
  753.  
  754. if /I "%SYSTEM%"=="xp" (
  755.     "%sc%" query InteractiveLogon | "%find%"  /i "OpenService FAILED" >NUL
  756.     if errorlevel 1 "%sc%" config InteractiveLogon start= auto
  757.     "%sc%" config Audiosrv start= auto
  758.     "%sc%" config CryptSvc start= auto
  759.     "%sc%" config RPCSs start= auto
  760.     "%sc%" config ShellHWDetection start= auto
  761.     "%sc%" config srservice start= auto
  762.     "%sc%" query uploadmgr | "%find%"  /i "OpenService FAILED" >NUL
  763.     if errorlevel 1 "%sc%" config uploadmgr start= auto
  764.     "%sc%" config WebClient start= auto
  765.     )
  766. echo.
  767.  
  768.  
  769.  
  770.  
  771.  
  772. rem startup: disabled
  773. echo  Setting services to "disabled" ...
  774. "%sc%" config cisvc start= disabled
  775. "%sc%" config MSDTC start= disabled
  776. "%sc%" config RemoteAccess start= disabled
  777. "%sc%" config TlntSvr start= disabled
  778. "%sc%" config messenger start= disabled
  779.  
  780.  
  781. if /I %SELECT%=="/all" (
  782.     "%sc%" query BITS | "%find%"  /i "SERVICE_NAME" >NUL
  783.     if not errorlevel 1 "%sc%" config BITS start= disabled
  784.     "%sc%" query wuauserv | "%find%"  /i "SERVICE_NAME" >NUL
  785.     if not errorlevel 1 "%sc%" config wuauserv start= disabled
  786.     "%sc%" config schedule start= disabled
  787.     "%sc%" config RemoteRegistry start= disabled
  788.     )
  789.  
  790. if /I "%SYSTEM%"=="xp" (
  791.     "%sc%" config ERSvc start= disabled
  792.     "%sc%" config HidServ start= disabled
  793.     "%sc%" config SSDPSRV start= disabled
  794.     
  795.     if /I %SELECT%=="/lan" (
  796.         if /I %SCHEDULER_ENABLED%==NO "%sc%" config schedule start= disabled
  797.         )
  798.  
  799.     if /I %SELECT%=="/std" (
  800.         if /I %SCHEDULER_ENABLED%==NO "%sc%" config schedule start= disabled
  801.         )
  802.  
  803.     if /I %XPSP2%==True (
  804.         echo.
  805.         echo  XPSP2: Disabling Security Center ...
  806.         "%sc%" config wscsvc start= disabled
  807.         )
  808.     )
  809.  
  810.  
  811. echo.
  812. echo  ------------------
  813. echo  Checking and stopping unnecessary services ...
  814. echo.
  815. "%sc%" query cisvc | "%find%"  /i "4  RUNNING" >NUL
  816.     if not errorlevel 1 "%net%" stop cisvc
  817. "%sc%" query RemoteAccess | "%find%"  /i "4  RUNNING" >NUL
  818.     if not errorlevel 1 "%net%" stop RemoteAccess
  819. "%sc%" query TlntSvr | "%find%"  /i "4  RUNNING" >NUL
  820.     if not errorlevel 1 "%net%" stop TlntSvr
  821. "%sc%" query MSDTC | "%find%"  /i "4  RUNNING" >NUL
  822.     if not errorlevel 1 "%net%" stop MSDTC
  823. "%sc%" query messenger | "%find%"  /i "4  RUNNING" >NUL
  824.     if not errorlevel 1 "%net%" stop messenger
  825.  
  826. if /I %SELECT%=="/all" (
  827.     "%sc%" query BITS | "%find%"  /i "SERVICE_NAME" >NUL
  828.     if not errorlevel 1 (
  829.         "%sc%" query BITS | "%find%"  /i "4  RUNNING" >NUL
  830.         if not errorlevel 1 "%net%" stop BITS
  831.         )
  832.     "%sc%" query wuauserv | "%find%"  /i "SERVICE_NAME" >NUL
  833.     if not errorlevel 1 (
  834.         "%sc%" query wuauserv | "%find%"  /i "4  RUNNING" >NUL
  835.         if not errorlevel 1 "%net%" stop wuauserv
  836.         )
  837.     "%sc%" query schedule | "%find%"  /i "4  RUNNING" >NUL
  838.     if not errorlevel 1 "%net%" stop schedule
  839.     )
  840.  
  841. if /I "%SYSTEM%"=="xp" (
  842.     if /I %SELECT%=="/lan" (
  843.         if /I %SCHEDULER_ENABLED%==NO "%net%" (
  844.             "%sc%" query schedule | "%find%"  /i "4  RUNNING" >NUL
  845.             if not errorlevel 1 "%net%" stop schedule
  846.             )
  847.         )
  848.  
  849.     if /I %SELECT%=="/std" (
  850.         if /I %SCHEDULER_ENABLED%==NO "%net%" (
  851.             "%sc%" query schedule | "%find%"  /i "4  RUNNING" >NUL
  852.             if not errorlevel 1 "%net%" stop schedule
  853.         )
  854.  
  855.     if /I %XPSP2%==True (
  856.         "%sc%" query wscsvc | "%find%"  /i "4  RUNNING" >NUL
  857.         if not errorlevel 1 "%net%" stop wscsvc
  858.         )
  859.  
  860.     )
  861.  
  862. echo  ------------------
  863. echo  Disabling DCOM ...
  864. echo REGEDIT4 > "%DCOM_TMP%"
  865. echo. >> "%DCOM_TMP%"
  866. echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole] >> "%DCOM_TMP%"
  867. echo "EnableDCOM"="N" >> "%DCOM_TMP%"
  868. echo "EnableDCOMHTTP"="N" >> "%DCOM_TMP%"
  869. echo. >> "%DCOM_TMP%"
  870. echo. >> "%DCOM_TMP%"
  871. "%regedit%" /s "%DCOM_TMP%"
  872. del /F /Q "%DCOM_TMP%"
  873.  
  874. echo  Disabling DCOM standard protocols ...
  875. echo REGEDIT4 > "%DCOMP_TMP%"
  876. echo. >> "%DCOMP_TMP%"
  877. echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc] >> "%DCOMP_TMP%"
  878. echo "DCOM Protocols"=hex(7):00,00,00,00 >> "%DCOMP_TMP%"
  879. echo. >> "%DCOMP_TMP%"
  880. echo. >> "%DCOMP_TMP%"
  881. "%regedit%" /s "%DCOMP_TMP%"
  882. del /F /Q "%DCOMP_TMP%"
  883.  
  884.    echo  Disabling port 135 (maybe 1025 too) ...
  885.    echo    - Removing RPC Client Protocols
  886.    echo REGEDIT4 > "%SMB_TMP%"
  887.    echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\ClientProtocols] >> "%SMB_TMP%"
  888.    echo. >> "%SMB_TMP%"
  889.    
  890.    if /I %SCHEDULER_ENABLED%==NO (
  891.     echo    - Advanced RPC Configuration 
  892.     echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet] >> "%SMB_TMP%"
  893.     echo "PortsInternetAvailable"="N" >> "%SMB_TMP%"
  894.     echo "UseInternetPorts"="N" >> "%SMB_TMP%"
  895.     echo. >> "%SMB_TMP%"
  896.     )
  897.  
  898.    if /I %XPSP2%==TRUE (
  899.     echo    - Advanced RPC Configuration 
  900.     echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet] >> "%SMB_TMP%"
  901.     echo "PortsInternetAvailable"="N" >> "%SMB_TMP%"
  902.     echo "UseInternetPorts"="N" >> "%SMB_TMP%"
  903.     echo. >> "%SMB_TMP%"
  904.     )
  905.    
  906.    echo    - Removing needless URL Handler [AIM,gopher,telnet]
  907.    echo [-HKEY_CLASSES_ROOT\AIM] >> "%SMB_TMP%"
  908.    echo [-HKEY_CLASSES_ROOT\gopher] >> "%SMB_TMP%"
  909.    echo [-HKEY_CLASSES_ROOT\telnet] >> "%SMB_TMP%"
  910.    echo. >> "%SMB_TMP%"
  911.    echo. >> "%SMB_TMP%"
  912.   "%regedit%" /s "%SMB_TMP%"
  913.   del /F /Q "%SMB_TMP%"
  914.  
  915. if /I %SELECT%=="/all" (
  916.     echo.
  917.     echo  Disabling SMB port 445 ...
  918.     echo REGEDIT4 > "%SMB_TMP%"
  919.     echo. >> "%SMB_TMP%"
  920.     echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] >> "%SMB_TMP%"
  921.     echo "SMBDeviceEnabled"=dword:00000000 >> "%SMB_TMP%"
  922.     echo. >> "%SMB_TMP%"
  923.     echo. >> "%SMB_TMP%"
  924.     "%regedit%" /s "%SMB_TMP%"
  925.     del /F /Q "%SMB_TMP%"
  926.     set REBOOT_REQUIRED=yes
  927.     )
  928.  
  929. if /I %SELECT%=="/std" (
  930.     echo.
  931.     echo  Disabling SMB port 445 ...
  932.     echo REGEDIT4 > "%SMB_TMP%"
  933.     echo. >> "%SMB_TMP%"
  934.     echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] >> "%SMB_TMP%"
  935.     echo "SMBDeviceEnabled"=dword:00000000 >> "%SMB_TMP%"
  936.     echo. >> "%SMB_TMP%"
  937.     echo. >> "%SMB_TMP%"
  938.     "%regedit%" /s "%SMB_TMP%"
  939.     del /F /Q "%SMB_TMP%"
  940.     set REBOOT_REQUIRED=yes
  941.     )
  942.  
  943. if /I %SELECT%=="/std" goto :NB_DISABLE
  944. if /I %SELECT%=="/all" goto :NB_DISABLE
  945. goto :SKIP_NB_DISABLE
  946.  
  947. :NB_DISABLE
  948.   if /I %DEACTIVATE_NETBIOS%==NO (
  949.         echo.
  950.         echo.  Due problems with SP2 and deactivating NetBIOS this option
  951.         echo   will be skipped.
  952.         echo.
  953.         goto :SKIP_NB_DISABLE
  954.         )
  955.   
  956.   rem Because of problems with SP2 Netbios:
  957.   if /I %XPSP2%==True (
  958.         echo.
  959.         echo  Note:
  960.         echo  -----
  961.         echo  If you experiencing problems after updating Windows XP with 
  962.         echo  Service Pack 2 please do following:
  963.         echo.
  964.         echo              set Deactivate_NetBIOS=NO
  965.         echo.
  966.         )
  967.   rem *** Thx2 Johannes Lichtenberger for the following lines using VBScript***
  968.   echo  Disable NetBios on all local interfaces ...
  969.   echo.
  970.   echo On Error Resume Next>> "%nb_tmp%"
  971.   echo.>> "%nb_tmp%"
  972.   echo TcpipoverNetbios = 2 '0=NetbiosfromDHCP 1=EnableNetbios 2=DisableNetbios>> "%nb_tmp%"
  973.   echo.>> "%nb_tmp%"
  974.   echo strComputer = ".">> "%nb_tmp%"
  975.   echo Set objWMIService = GetObject("winmgmts:\\" ^& strComputer ^& "\root\cimv2")>> "%nb_tmp%"
  976.   echo Set objNICs = objWMIService.ExecQuery _>> "%nb_tmp%"
  977.   echo    ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")>> "%nb_tmp%"
  978.   echo For Each objNic In objNICs>> "%nb_tmp%"
  979.   echo    errTcpipNetbios = objNic.SetTCPIPNetBIOS(TcpipoverNetbios)>> "%nb_tmp%"
  980.   echo Next>> "%nb_tmp%"
  981.   "%SYSTEMROOT%\SYSTEM32\CSCRIPT.EXE" "%nb_tmp%"
  982.   del /F /Q "%nb_tmp%"
  983.   set REBOOT_REQUIRED=yes
  984.  
  985. :SKIP_NB_DISABLE
  986. rem Skip Billboard because /all is used
  987. if /I %SELECT%=="/all" goto :SW_ALL
  988. if /I %SELECT%=="/std" goto :SW_ALL
  989. if /I %SELECT%=="/relan" goto :SW_ALL
  990. echo.
  991. echo  ___________________________________________________________________
  992. echo.
  993. echo                   *** Zusammenfassung / Result ***
  994. echo.
  995. echo  Es wurden NICHT alle Aenderungen umgesetzt!
  996. echo  Um alle Vorschlaege von kssysteme.de umzusetzen, verwenden Sie
  997. echo  bitte den Parameter '/all' oder waehlen Sie im Menue den Punkt "3".
  998. echo.
  999. echo  Not all changes could be performed. To change all issues listed 
  1000. echo  on www.ntsvcfg.de please use parameter '/all' or select item "3"!
  1001. echo  ___________________________________________________________________
  1002.  
  1003. :SW_ALL
  1004.  
  1005. if /I %SELECT%=="/relan" (
  1006.     rem startup: auto
  1007.     echo.
  1008.     echo  ------------------
  1009.     echo  Re-enabling services ...
  1010.     "%sc%" config LmHosts  start= auto
  1011.     "%sc%" config RemoteRegistry start= auto
  1012.     "%sc%" config SamSs start= auto
  1013.     "%sc%" config Winmgmt start= auto
  1014.     if /I "%SYSTEM%"=="2k" (
  1015.         "%sc%" config RPCSs start= auto
  1016.         "%sc%" config lanmanServer start= auto
  1017.         "%sc%" config seclogon start= auto
  1018.         )
  1019.     if /I "%SYSTEM%"=="XP" (
  1020.         rem "%sc%" config SharedAccess start= auto
  1021.         )
  1022.  
  1023.  
  1024.     rem start re-enabled services
  1025.     echo.
  1026.     echo  ------------------
  1027.     echo  [Re]starting services ...
  1028.     echo.
  1029.     
  1030.     "%sc%" query RemoteRegistry | "%find%"  /i "1  STOPPED" >NUL
  1031.     if not errorlevel 1 "%net%" start RemoteRegistry
  1032.     "%sc%" query SamSs | "%find%"  /i "1  STOPPED" >NUL
  1033.     if not errorlevel 1 "%net%" start SamSs
  1034.     "%sc%" query LmHosts | "%find%"  /i "1  STOPPED" >NUL
  1035.     if not errorlevel 1 "%net%" start LmHosts
  1036.     "%sc%" query Winmgmt | "%find%"  /i "1  STOPPED" >NUL
  1037.     if not errorlevel 1 "%net%" start Winmgmt
  1038.     if /I "%SYSTEM%"=="2k" (
  1039.         "%sc%" query LanmanServer | "%find%"  /i "1  STOPPED" >NUL
  1040.         if not errorlevel 1 "%net%" start lanmanServer
  1041.         "%sc%" query RPCSs | "%find%"  /i "1  STOPPED" >NUL
  1042.         if not errorlevel 1 "%net%" start RPCSs
  1043.         "%sc%" query Seclogon | "%find%"  /i "1  STOPPED" >NUL
  1044.         if not errorlevel 1 "%net%" start seclogon
  1045.         )
  1046.  
  1047.     if /I "%SYSTEM%"=="XP" (
  1048.         rem "%net%" start SharedAccess
  1049.         )
  1050.  
  1051.     rem enable SMB port 445
  1052.     echo.
  1053.     echo  ------------------
  1054.     echo  Enabling SMB port 445 ...
  1055.     echo REGEDIT4 > "%SMB_TMP%"
  1056.     echo. >> "%SMB_TMP%"
  1057.     echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] >> "%SMB_TMP%"
  1058.     echo "SMBDeviceEnabled"=dword:00000001 >> "%SMB_TMP%"
  1059.     echo. >> "%SMB_TMP%"
  1060.     echo. >> "%SMB_TMP%"
  1061.     "%regedit%" /s "%SMB_TMP%"
  1062.     del /F /Q "%SMB_TMP%"
  1063.     set REBOOT_REQUIRED=yes
  1064.     )
  1065.  
  1066.  
  1067. rem Creating fingerprint of current service settings...
  1068. if exist "%FPRINT%" del /F /Q "%FPRINT%"
  1069. if /I %USE_FPRINT%==YES (
  1070.     echo.
  1071.     echo  Creating fingerprint which will take a few seconds ...
  1072.     "%sc%" query type= service state= all bufsize= 8192 | %FIND% "SERVICE_NAME" > %TEMP%\~svclist.txt
  1073.     for /F "tokens=1*" %%a in (%TEMP%\~svclist.txt) do (
  1074.         echo %%b >>"%FPRINT%"
  1075.         "%sc%" query "%%b" | %FIND% "STATE" >>"%FPRINT%"
  1076.         "%sc%" qc "%%b" | %FIND% "DISPLAY_NAME" >>"%FPRINT%"
  1077.         "%SC%" qc "%%b" | %FIND% "START_TYPE" >>"%FPRINT%"
  1078.         echo. >> "%FPRINT%" 
  1079.         )
  1080.     del "%TEMP%\~svclist.txt"
  1081.     echo                                                      ... done.
  1082.     )
  1083. goto :END
  1084.  
  1085.  
  1086. :RESTORE
  1087. echo  ____________________________________________________
  1088. echo.
  1089. echo  Letzte Aenderungen zuruecknehmen [y/n]?
  1090. set /P UNDO= Undo last changes [y/n]?
  1091. if /I "%UNDO%"=="y" (
  1092.     echo  _______________________________________________________________
  1093.     echo.
  1094.     echo  Hinweis:
  1095.     echo  ========
  1096.     echo  Moeglicherweise meldet Windows Fehler beim Importieren.
  1097.     echo  Ignorieren Sie diese mit Klick auf "OK".
  1098.     echo.
  1099.     echo  Windows might probably report an error during importing the
  1100.     echo  backups. Just ignore this by clicking the "OK" button!
  1101.     echo  _______________________________________________________________
  1102.     echo  Status:
  1103.     echo  -------
  1104.     :RESTORE_EXT
  1105.     if exist "%SVC_BAK%" (
  1106.         echo     Importing services ...
  1107.         echo        ["%SVC_BAK%"]
  1108.         "%regedit%" /s "%SVC_BAK%"
  1109.         set action=""
  1110.         )
  1111.  
  1112.     if exist "%DCOM_BAK%" (
  1113.         echo     Importing DCOM ...
  1114.         echo        ["%DCOM_BAK%"]
  1115.         "%regedit%" /s "%DCOM_BAK%"
  1116.         )
  1117.  
  1118.     if exist "%DCOMP_BAK%" (
  1119.         echo     Importing DCOM-standard protocols ...
  1120.         echo        ["%DCOMP_BAK%"]
  1121.         "%regedit%" /s "%DCOMP_BAK%"
  1122.         )
  1123.  
  1124.     if exist "%SMB_BAK%" (
  1125.         echo     Importing SMB-settings ...
  1126.         echo        ["%SMB_BAK%"]
  1127.         "%regedit%" /s "%SMB_BAK%"
  1128.         )
  1129.  
  1130.     if exist "%HANDLER1%" (
  1131.         echo     Importing URL_HANDLER AIM ...
  1132.         echo        ["%HANDLER1%"]
  1133.         "%regedit%" /s "%HANDLER1%"
  1134.         )
  1135.  
  1136.     if exist "%HANDLER2%" (
  1137.         echo     Importing URL_HANDLER GOPHER ...
  1138.         echo        ["%HANDLER2%"]
  1139.         "%regedit%" /s "%HANDLER2%"
  1140.         )
  1141.  
  1142.     if exist "%HANDLER3%" (
  1143.         echo     Importing URL_HANDLER TELNET ...
  1144.         echo        ["%HANDLER3%"]
  1145.         "%regedit%" /s "%HANDLER3%"
  1146.         )
  1147.   
  1148.     rem Skipping back to next state
  1149.     if /I "%RESTORE%"=="YES" goto :NO_RESTORE
  1150.  
  1151.     echo     Removing RPC Internet key ....
  1152.     echo REGEDIT4 >"%USERPROFILE%\svc_fix.reg"
  1153.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1154.     echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet] >>"%USERPROFILE%\svc_fix.reg"
  1155.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1156.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1157.     "%regedit%" /s "%USERPROFILE%\svc_fix.reg"
  1158.     del /F /Q "%USERPROFILE%\svc_fix.reg"
  1159.   
  1160.     rem Creating fingerprint of current service settings...
  1161.     if exist "%FPRINT%" del /F /Q "%FPRINT%"
  1162.     if /I %USE_FPRINT%==YES (
  1163.         echo.
  1164.         echo  Creating fingerprint which will take a few seconds ...
  1165.         "%sc%" query type= service state= all bufsize= 8192 | %FIND% "SERVICE_NAME" > %TEMP%\~svclist.txt
  1166.         for /F "tokens=1*" %%a in (%TEMP%\~svclist.txt) do (
  1167.             echo %%b >>"%FPRINT%"
  1168.             "%sc%" query "%%b" | %FIND% "STATE" >>"%FPRINT%"
  1169.             "%sc%" qc "%%b" | %FIND% "DISPLAY_NAME" >>"%FPRINT%"
  1170.             "%SC%" qc "%%b" | %FIND% "START_TYPE" >>"%FPRINT%"
  1171.             echo. >> "%FPRINT%" 
  1172.             )
  1173.         del "%TEMP%\~svclist.txt"
  1174.         echo                                                      ... done.
  1175.         )
  1176.  
  1177.     echo.
  1178.     echo  _______________________________________________________________
  1179.     echo.
  1180.     echo               *** Zusammenfassung / Result ***
  1181.     echo.
  1182.     echo  Die Ruecksicherung wurde ausgefuehrt. Wenn in der oberen Zeile 
  1183.     echo  keine Statusmeldungen zu sehen sind, existierten keine rueckzu-
  1184.     echo  sichernden Dateien. Aktivieren Sie gegebenenfalls NetBios in 
  1185.     echo  den Eigenschaften der jeweiligen Netzwerkkarte.
  1186.     echo  Bitte starten Sie abschliessend Ihren Rechner neu.
  1187.     echo.
  1188.     echo  Restore finished. If you don't see any messages in the status
  1189.     echo  box above, there were no files to restore. Please reactivate
  1190.     echo  NetBios for each NIC you want use with it and reboot afterwards.
  1191.     echo  ________________________________________________________________  
  1192.     )
  1193.  
  1194. goto :END
  1195.  
  1196. :RESTORE_DEFAULTS
  1197. echo.
  1198. echo                     *** Restore Factory Settings ***
  1199. echo.
  1200. echo  ______________________________________________________________________________
  1201. echo.
  1202. echo  Einstellungen vor Erstanwendung des Scripts wiederherstellen (ausser NetBIOS)?
  1203. set /P UNDO= Restore defaults (before using script, except NetBIOS) [y/n]?
  1204. if /I "%UNDO%"=="y" (
  1205.     echo.
  1206.     echo   - Restoring original service settings [if exists] ...
  1207.     if exist "%SVC_BAK%.default" %regedit%" /s "%SVC_BAK%.default"
  1208.     if exist "%DCOM_BAK%.default" "%regedit%" /s "%DCOM_BAK%.default"
  1209.     if exist "%DCOMP_BAK%.default" "%regedit%" /s "%DCOMP_BAK%.default"
  1210.     if exist "%SMB_BAK%.default" "%regedit%" /s "%SMB_BAK%.default"
  1211.     if exist "%HANDLER1%.default" "%regedit%" /s "%HANDLER1%.default"
  1212.     if exist "%HANDLER2%.default" "%regedit%" /s "%HANDLER2%.default"
  1213.     if exist "%HANDLER3%.default" "%regedit%" /s "%HANDLER3%.default"
  1214.     echo                                                 ... done.
  1215.   
  1216.     echo   - Removing RPC Internet key ...
  1217.     echo REGEDIT4 >"%USERPROFILE%\svc_fix.reg"
  1218.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1219.     echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet] >>"%USERPROFILE%\svc_fix.reg"
  1220.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1221.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1222.     "%regedit%" /s "%USERPROFILE%\svc_fix.reg"
  1223.     del /F /Q "%USERPROFILE%\svc_fix.reg"
  1224.     echo                                                 ... done.
  1225.  
  1226.     )
  1227. goto :QUIT
  1228.  
  1229.  
  1230. :SC_DOWNLOAD
  1231. echo  ______________________________________________________________
  1232. echo.
  1233. echo  Besteht eine aktive Internetverbindung?
  1234. echo  Are you currently connected to the internet?
  1235. echo.
  1236. set /P UNDO= Bitte waehlen/Please choose: [y/n]?
  1237.   if /I "%UNDO%"=="y" goto :SC_DOWNLOAD_OK
  1238. goto :END
  1239.  
  1240. :SC_DOWNLOAD_OK
  1241. if exist "%SYSTEMROOT%\sc.zip" goto :SCE
  1242. echo  Generating FTP-script ...
  1243. if exist "%USERPROFILE%"\script_sc.ls del /F "%USERPROFILE%\script_sc.ls"
  1244. echo open 207.46.133.140 >"%USERPROFILE%\script_sc.ls"
  1245. echo user anonymous anonymous@aol.com >>"%USERPROFILE%\script_sc.ls"
  1246. echo type binary >>"%USERPROFILE%\script_sc.ls"
  1247. echo user anonymous anonymous@aol.com >>"%USERPROFILE%\script_sc.ls"
  1248. echo type binary >>"%USERPROFILE%\script_sc.ls"
  1249. echo get /reskit/win2000/sc.zip "%SYSTEMROOT%\System32\SC.ZIP" >>"%USERPROFILE%\script_sc.ls"
  1250. echo quit >>"%USERPROFILE%\script_sc.ls"
  1251.  
  1252. echo  Downloading SC.EXE ...
  1253. ftp -s:"%USERPROFILE%\script_sc.ls"
  1254. del /F "%USERPROFILE%\script_sc.ls"
  1255.  
  1256. :SCE
  1257. if exist "%SYSTEMROOT%\System32\pkunzip.exe" goto :PKE
  1258. echo  Generating FTP-script ...
  1259. if exist "%USERPROFILE%"\script_pk.ls del /F "%USERPROFILE%\script_pk.ls"
  1260. echo open ftp.uni-duesseldorf.de >"%USERPROFILE%\script_pk.ls"
  1261. echo user anonymous anonymous@aol.com >>"%USERPROFILE%\script_pk.ls"
  1262. echo type binary >>"%USERPROFILE%\script_pk.ls"
  1263. echo user anonymous anonymous@aol.com >>"%USERPROFILE%\script_pk.ls"
  1264. echo type binary >>"%USERPROFILE%\script_pk.ls"
  1265. echo get /pub/ie/pkunzip.exe "%SYSTEMROOT%\System32\pkunzip.exe" >>"%USERPROFILE%\script_pk.ls"
  1266. echo quit >>"%USERPROFILE%\script_pk.ls"
  1267.  
  1268. echo  Downloading PKUNZIP.EXE ...
  1269. ftp -s:"%USERPROFILE%\script_pk.ls"
  1270. del /F "%USERPROFILE%\script_pk.ls"
  1271.  
  1272. :PKE
  1273. if not exist "%SYSTEMROOT%\System32\sc.zip" (
  1274.     echo.
  1275.     echo   Download fehlgeschlagen. Bitte laden sie sich die Datei SC.ZIP manuell
  1276.     echo   herunter und kopieren diese nach %SYSTEMROOT%\.
  1277.     echo.
  1278.     echo   Downloading SC.ZIP failed. Please download it manually an copy it to
  1279.     echo   %SYSTEMROOT%\.
  1280.     )
  1281.  
  1282. if not exist "%SYSTEMROOT%\System32\pkunzip.exe" (
  1283.     echo.
  1284.     echo   Die Datei PKUNZIP.EXE konnte nicht gefunden werden. Diese wird zum 
  1285.     echo   Entpacken des Archivs SC.ZIP benoetigt!
  1286.     echo.
  1287.     echo   File PKUNZIP.EXE not found. It is needed to decompress the archive SC.EXE.
  1288.     )
  1289.  
  1290. if exist "%SYSTEMROOT%\System32\SC.ZIP" (
  1291.     if exist "%SYSTEMROOT%\System32\pkunzip.exe" (
  1292.         "%SYSTEMROOT%\System32\pkunzip.exe" -e "%SYSTEMROOT%\System32\sc.zip" sc.exe
  1293.         )
  1294.     )
  1295.  
  1296. move /Y sc.exe "%SYSTEMROOT%\System32\"
  1297. echo.
  1298. echo  Skript wird neu gestartet ...
  1299. echo  Restarting script ...
  1300. goto :START
  1301.  
  1302. :FIX
  1303. echo.
  1304. echo                     -= svc2kxp.cmd taskplaner fix =-
  1305. echo.
  1306. echo.
  1307. echo  Druecken Sie "Y", um das Problem mit dem Taskplaner ("falscher Parameter") 
  1308. echo  unter Windows XP zu beheben.
  1309. echo.
  1310. echo  Press "Y", if you want fix issue "scheduler doesn't start under Windows XP 
  1311. echo  after running script v2.0 - v2.1build0".
  1312. echo.
  1313. set /P UNDO= Fix problem [y/n]?
  1314. if /I "%UNDO%"=="y" (
  1315.     echo REGEDIT4 >"%USERPROFILE%\svc_fix.reg"
  1316.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1317.     echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet] >>"%USERPROFILE%\svc_fix.reg"
  1318.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1319.     echo. >>"%USERPROFILE%\svc_fix.reg"
  1320.     "%regedit%" /s "%USERPROFILE%\svc_fix.reg"
  1321.     del /F /Q "%USERPROFILE%\svc_fix.reg"
  1322.     echo  ______________________________________
  1323.     echo  OK. Bitte starten Sie den Rechner neu und kontrollieren Sie erneut,
  1324.     echo  ob hierdurch Ports geoeffnet wurden.
  1325.     echo.
  1326.     echo  Done. Please reboot and check again for open ports ...!
  1327.     )
  1328.  
  1329.  
  1330. rem Creating fingerprint of current service settings...
  1331. if exist "%FPRINT%" del /F /Q "%FPRINT%"
  1332. goto quit
  1333. if /I %USE_FPRINT%==YES (
  1334.     echo.
  1335.       echo  Creating fingerprint which will take a few seconds ...
  1336.       "%sc%" query type= service state= all bufsize= 8192 | %FIND% "SERVICE_NAME" > %TEMP%\~svclist.txt
  1337.       for /F "tokens=1*" %%a in (%TEMP%\~svclist.txt) do (
  1338.         echo %%b >>"%FPRINT%"
  1339.         "%sc%" query "%%b" | %FIND% "STATE" >>"%FPRINT%"
  1340.         "%sc%" qc "%%b" | %FIND% "DISPLAY_NAME" >>"%FPRINT%"
  1341.         "%SC%" qc "%%b" | %FIND% "START_TYPE" >>"%FPRINT%"
  1342.         echo. >> "%FPRINT%" 
  1343.         )
  1344.     del "%TEMP%\~svclist.txt"
  1345.     echo                                                      ... done.
  1346.     )
  1347.  
  1348. goto :QUIT
  1349.  
  1350. rem **** Additional Feature List ****
  1351.  
  1352. :MORE_OPTIONS
  1353. cls
  1354. echo  ______________________________________________________________________________
  1355. echo.
  1356. echo                 *** Weitere Optionen / More Options Menue ***
  1357. echo                     =====================================
  1358. echo.
  1359. if /I "%SVC_MOD%"=="YES" (
  1360.     echo  [E]...Zeigt eine Liste an, welche Dienste seit der letzten Anwendung
  1361.     echo        von svc2kxp.cmd veraendert wurden.
  1362.     echo.
  1363.     echo        Shows a list with modified services since last use of scv2kxp.cmd
  1364.     echo.
  1365.     )
  1366.  
  1367. echo  [G]...Generiert einen neuen Fingerprint, um Veraenderungen bei 
  1368. echo        Diensten zu erfassen
  1369. echo.
  1370. echo        Generates a new fingerprint to correctly detect changes of 
  1371. echo        services
  1372. echo.
  1373. echo  [S]...Sichern der aktuellen Dienstekonfiguration.
  1374. echo        Saving current NT service configuration (auto/demand/disabled).
  1375. echo.
  1376. echo  ______________________________________________________________________________
  1377. echo.
  1378. if /I "%SVC_MOD%"=="NO" set /P CHS=       Bitte waehlen Sie/Please choose: [G], [S], [B]ack or [Q]uit?
  1379. if /I "%SVC_MOD%"=="YES" set /P CHS=       Bitte waehlen Sie/Please choose: [E], [G], [S], [B]ack or [Q]uit?
  1380. if /I "%SVC_MOD%"=="YES" if /I "%CHS%"=="E" GOTO :EVALUATE_SERVICES
  1381. if /I "%CHS%"=="G" GOTO :CREATING_NEW_FINGERPRINT
  1382. if /I "%CHS%"=="B" (
  1383.                     CLS
  1384.             GOTO :START
  1385.            )
  1386. if /I "%CHS%"=="S" GOTO :SAVE_SVC_SETTINGS
  1387. if /I "%CHS%"=="Q" GOTO :QUIT
  1388. GOTO :MORE_OPTIONS
  1389.  
  1390.  
  1391.  
  1392. :EVALUATE_SERVICES
  1393. cls
  1394. echo  ______________________________________________________________________________
  1395. echo.
  1396. echo                        *** Evaluate Services Menue ***
  1397. echo.
  1398. "%FC%" /N "%FPRINT%" "%USERPROFILE%\svc2cmp.sav"
  1399. echo  ______________________________________________________________________________
  1400. echo.
  1401. set /P CHS=       Bitte waehlen Sie/Please choose: [B]ack, [U]pdate or [Q]uit?
  1402. if /I "%CHS%"=="B" GOTO :MORE_OPTIONS
  1403. if /I "%CHS%"=="U" GOTO :CREATING_NEW_FINGERPRINT
  1404. if /I "%CHS%"=="Q" GOTO :QUIT
  1405. GOTO :MORE_OPTIONS
  1406.  
  1407.  
  1408. :SAVE_SVC_SETTINGS
  1409. cls
  1410. echo  ______________________________________________________________________________
  1411. echo.
  1412. echo               *** Manage current services configurations menue ***
  1413. echo                   --------------------------------------------
  1414. echo.
  1415. echo   Soll die aktuelle Dienstekonfiguration gesichert werden?
  1416. echo.
  1417. set /P CHS=  Should the current service configuration saved (y/n)?
  1418. if /I "%CHS%"=="N" GOTO :MORE_OPTIONS
  1419. if /I "%CHS%"=="Y" (
  1420.     echo   Saving current services settings to:
  1421.     echo. 
  1422.     echo    - %SVC_SAV%
  1423.     "%regedit%" /e "%SVC_SAV%" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
  1424.     echo.
  1425.     echo   ... Done!
  1426.     echo  ______________________________________________________________________________
  1427.     echo.
  1428.     echo        Beliebige Taste druecken, um fortzufahren. Hit any key to return.
  1429.     pause>NUL
  1430.     )
  1431. if /I "%CHS%"=="Q" GOTO :QUIT
  1432. goto :MORE_OPTIONS
  1433.  
  1434.  
  1435.  
  1436.  
  1437. pause >NUL
  1438. goto :MORE_OPTIONS
  1439.  
  1440.  
  1441. :CREATING_NEW_FINGERPRINT
  1442. cls
  1443. echo  ______________________________________________________________________________
  1444. echo.
  1445. echo                     *** Creating new fingerprint menue ***
  1446. echo                         ------------------------------
  1447. echo.
  1448. set /P CHS=  Create new fingerprint [Y/N]?
  1449. if /I "%CHS%"=="Y" (
  1450.     if exist "%FPRINT%" del /F /Q "%FPRINT%"
  1451.     echo   Creating new fingerprint which will take a few seconds ...
  1452.     "%sc%" query type= service state= all bufsize= 8192 | %FIND% "SERVICE_NAME" > %TEMP%\~svclist.txt
  1453.     for /F "tokens=1*" %%a in (%TEMP%\~svclist.txt) do (
  1454.         echo %%b >>"%FPRINT%"
  1455.         "%sc%" query "%%b" | %FIND% "STATE" >>"%FPRINT%"
  1456.         "%sc%" qc "%%b" | %FIND% "DISPLAY_NAME" >>"%FPRINT%"
  1457.         "%SC%" qc "%%b" | %FIND% "START_TYPE" >>"%FPRINT%"
  1458.         echo. >> "%FPRINT%" 
  1459.         )
  1460.     del "%TEMP%\~svclist.txt"
  1461.     echo                                                           ... done. 
  1462.     echo  ______________________________________________________________________________
  1463.     echo.
  1464.     echo                          [Press any key to continue]
  1465.     set CHK_SVC=YES
  1466.     PAUSE >NUL
  1467.     )
  1468. cls
  1469. GOTO :MORE_OPTIONS
  1470.  
  1471.  
  1472. :XPSYSRESTORE
  1473. REM Creating A System Restore Point // Source Code: MS Technet Scriptcenter
  1474.     echo.
  1475.     echo  # Creating System Restore Point [if XP SysRestore is enabled] ...
  1476.     if exist "%srctmp%" del /F /Q "%srctmp%"
  1477.     echo CONST DEVICE_DRIVER_INSTALL = 10 >"%srctmp%"
  1478.     echo CONST BEGIN_SYSTEM_CHANGE = 100 >>"%srctmp%"
  1479.     echo.>>"%srctmp%"
  1480.     echo strComputer = ".">>"%srctmp%"
  1481.     echo Set objWMIService = GetObject("winmgmts:" _ >>"%srctmp%"
  1482.     echo     ^& "{impersonationLevel=impersonate}!\\" ^& strComputer ^& "\root\default")>>"%srctmp%"
  1483.     echo.>>"%srctmp%"
  1484.     echo Set objItem = objWMIService.Get("SystemRestore")>>"%srctmp%"
  1485.     echo errResults = objItem.CreateRestorePoint _ >>"%srctmp%"
  1486.     echo     ("svc2kxp.cmd created restore point", DEVICE_DRIVER_INSTALL, BEGIN_SYSTEM_CHANGE)>>"%srctmp%"
  1487.     "%srctmp%"
  1488.     del /F /Q "%srctmp%"
  1489.     echo.
  1490. goto :XPSYSRESTORE_DONE
  1491.  
  1492.  
  1493. :END
  1494. if "%REBOOT_REQUIRED%"=="yes" (
  1495.     echo.
  1496.     echo  ______________________________________________________
  1497.     echo.
  1498.     echo           *** Zusammenfassung / Result ***
  1499.     echo.
  1500.     if /I %SELECT%=="/all" echo  Es wurden alle gewuenschten Aenderungen durchgefuehrt.
  1501.     if /I %SELECT%=="/std" echo  Einige Dienste blieben unveraendert.
  1502.     if /I %SELECT%=="/relan" echo  Notwendige LAN-Einstellungen wurden aktiviert.
  1503.     echo  Bitte starten Sie abschliessend Ihren Rechner neu.
  1504.     echo.
  1505.     if /I %SELECT%=="/all" echo  All changes applied successfully.
  1506.     if /I %SELECT%=="/std" echo  Some services stay unchanged.
  1507.     if /I %SELECT%=="/relan" echo  LAN settings reactivated.
  1508.     echo  Please reboot.
  1509.     echo  ______________________________________________________  
  1510.     )
  1511.  
  1512.  
  1513. :QUIT
  1514. echo        ________________________________________________________
  1515. echo.
  1516. echo             Weitere Informationen: http://www.ntsvcfg.de 
  1517. echo        For more informations: http://www.ntsvcfg.de/ntsvcfg_eng
  1518. echo        ________________________________________________________
  1519. echo         [Taste zum Beenden druecken]   [Press any key to quit] 
  1520. echo         ------------------------------------------------------
  1521. echo.
  1522. if /I "%1"=="" pause>NUL
  1523.  
  1524. :QUIT_EXT
  1525. endlocal
  1526. if exist "%USERPROFILE%\svc2cmp.sav" del /F /Q "%USERPROFILE%\svc2cmp.sav"
  1527. echo.
  1528.  
  1529.