elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Script para Detener Servicios de windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Script para Detener Servicios de windows  (Leído 4,463 veces)
dracrac

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Script para Detener Servicios de windows
« en: 8 Septiembre 2015, 20:10 pm »

Saludos

He hecho un script para detener los servicios de windows que nos interese pero no acaba de funcionar. Alguien me podria ayudar a ver los problemas? Gracias
Aqui pongo el script:

Código
  1. @echo off
  2. :PARAR
  3. cls
  4. setlocal EnableDelayedExpansion
  5. set /p servein=Nombre del Servicio:
  6. set dname=%servein%
  7. for /f "tokens=3*" %%a in ('sc GetDisplayName %dname% ^| findstr "Nombre"') do (set serveid=%%a %%b)
  8. (sc query %servein% | FIND "NOMBRE") > tanca.txt
  9. for /f "tokens=2" %%i in (tanca.txt) do (set cadena=%%i)
  10. set cadenafinal=%serveid% : %cadena%
  11. IF %ErrorLevel% EQU 1 (echo.&echo Servicio %servein% no existe !!)
  12. IF %ErrorLevel% EQU 0 (
  13. for /f "tokens=4" %%a in ('sc query %servein% ^| findstr "ESTADO"') do (set "parat=%%a")
  14. rem echo parat:!parat!
  15. if "!parat!" == "STOPPED" (
  16. echo El servicio %servein% ya esta detenido  
  17. echo  Nombre Descriptivo: %serveid%
  18. echo  Nombre del Servicio: %servein%
  19. for /f "tokens=3" %%a in ('sc qc %servein% ^| find "TIPO_INICIO"') do (set "stype=%%a")
  20. if !stype! == 2 (set "stype=AUTOMATIC")
  21. if !stype! == 3 (set "stype=MANUAL")
  22. if !stype! == 4 (set "stype=DISABLED")
  23. echo  !parat! / !stype!
  24. )
  25. if "!parat!" == "RUNNING" (
  26. sc config %servein% start= disabled > nul
  27. sc stop %servein% > nul
  28. echo errorlevel:%errorlevel%
  29.  
  30. REM si sc qc servei retorna un 5 el servei esta protegit
  31. if %errorlevel% == 5 (
  32. echo Acceso denegado
  33. echo El servicio %servein% no se puede detener esta protegido por el sistema
  34. echo si de detiene puede crear inestabilidad en el sistema
  35. )
  36. REM si sc qc servei retorna un 0 el servei esta iniciat pertant el parem
  37. if %errorlevel% == 0 (
  38. sc config %servein% start= disabled > nul
  39. sc stop %servein% > nul
  40. rem for /f "tokens=3,*" %%c in ('sc query %servein% ^| findstr "ESTADO" ') do ( echo %%d : %cadenafinal% )
  41. for /f "tokens=3,*" %%c in ('sc query %servein% ^| findstr "ESTADO" ') do (
  42. echo  El servicio se esta parando...%%d..OK
  43. echo  Nombre Descriptivo: %serveid%
  44. echo  Nombre del Servicio: %cadena%
  45. )
  46. )
  47. )
  48. )
  49. REM Delete variables
  50. del tanca.txt
  51. set "parat="
  52. set "dname="
  53. set "serveid="
  54. set "servein="
  55. set "cadena="
  56. set /p otro=Parar Otro (s/n)?
  57. if %otro% == n goto PREGUNTA
  58. goto PARAR

el problema esta que el comando:

Código:
sc stop %servein% > nul
echo errorlevel:%errorlevel%

no me lee bien la variable %errorlevel% y no va donde tiene que ir. Por ejemplo provando con un servicio protegido como schedule que no se puede parar con el comando sc no me entra dentor del if errorlevel 5.

Alguien podria ayudarme? Gracias!!


« Última modificación: 9 Septiembre 2015, 10:07 am por Eleкtro » En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: Script para Detener Servicios de windows
« Respuesta #1 en: 9 Septiembre 2015, 09:38 am »

No me gusta usar batch para hacer éste tipo de cosas, creo que lenguajes como VBS y similares dejan un código más limpio. El siguiente ejemplo es un script que iniciará cualquier servicio que esté marcado como "automático" que que no se esté ejecutando actualmente:

Código
  1. On Error Resume Next
  2. Set oWSH = CreateObject("WScript.Shell")
  3. Set oWMI = GetObject("winmgmts:\\.\root\CIMV2")
  4.  
  5. Function ForceConsole()
  6. If InStr(LCase(WScript.FullName), "cscript.exe") = 0 Then
  7. oWSH.Run "cscript " & Chr(34) & WScript.ScriptFullName & Chr(34)
  8. WScript.Quit
  9. End If
  10. End Function
  11.  
  12. Function printf(txt)
  13. WScript.StdOut.WriteLine txt
  14. End Function
  15.  
  16. Function scanf()
  17. scanf = LCase(WScript.StdIn.ReadLine)
  18. End Function
  19.  
  20. Function StartServices()
  21. Set cQuery = oWMI.ExecQuery("SELECT * FROM Win32_Service WHERE StartMode = 'Auto' AND State <> 'Running'")
  22. For Each oItem In cQuery
  23. printf " [>] " & oItem.Name
  24. printf " [>] " & oItem.Caption
  25. printf " "
  26. Call oItem.StartService()
  27. Next
  28. End Function
  29.  
  30. Call ForceConsole()
  31. printf "Buscando servicios automaticos que se hayan detenido..." & vbcrlf
  32. Call StartServices()
  33. printf ""
  34. printf "Proceso terminado, pulsa <enter para salir>"
  35. scanf

Modificarlo para hacer justo lo contrario no te costará nada :)


En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Script para Detener Servicios de windows
« Respuesta #2 en: 9 Septiembre 2015, 10:10 am »

Código
  1. SetLocal EnableDelayedExpansion
  2. SC.exe Stop "service_name"

...o también:
Código
  1. SC.exe Stop "service_name"
  2. Call Echo %%ERRORLEVEL%%

De todas formas y sin duda alguna la mejor solución es evitar Batch siempre que puedas. Prueba el código del compañero @Mad Antrax.

Saludos
« Última modificación: 9 Septiembre 2015, 10:16 am por Eleкtro » En línea

dracrac

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Script para Detener Servicios de windows
« Respuesta #3 en: 9 Septiembre 2015, 10:12 am »

Gracias Mad Antrax por tu respuesta i tu alternativa!

Pero me gustaria saber porque no funciona el codigo que he hecho, creo que esta correcto pero por alguna razón no se comporta del todo como debe.

Me gustaria saber porque el comando sc se comporta diferente cuando lo escribes en la linea de comandos que cuando esta dentro de un fichero bat, que es lo que pasa en el ejemplo que he puesto.
En línea

dracrac

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Script para Detener Servicios de windows
« Respuesta #4 en: 9 Septiembre 2015, 10:35 am »

Gracias de nuevo Elektro era eso lo que pasaba!  :D

Porque razón/es es mejor utilizar otro lenguaje diferente del batch? Cual me aconsejas que utilize para hacer estas cosas y porque?  

y  Para que cosas utilizas el batch?
« Última modificación: 9 Septiembre 2015, 10:40 am por dracrac » En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.164


Cheats y Trainers para todos!


Ver Perfil WWW
Re: Script para Detener Servicios de windows
« Respuesta #5 en: 9 Septiembre 2015, 10:43 am »

Gracias de nuevo Elektro era eso lo que pasaba!  :D

Porque razón/es es mejor utilizar otro lenguaje diferente del batch? Cual me aconsejas que utilize para hacer estas cosas y porque?  

y  Para que cosas utilizas el batch?

Realmente puedes utilizar el lenguaje que desees y te sientas más cómodo. Utilizar lenguajes de bajo nivel te obligará a escribir más código, mientras que los lenguajes de alto nivel te permitirán simplificar un grupo de instrucciones en líneas de código más simple. VBS, además tiene mejoras como el uso de objetos y eventos. Según tu necesidad habrá cosas que con batch no podrás hacer.

Así pues, siempre y cuando te sea como batch, úsalo. Pero es bueno conocer y tener otras alternativas.

:)
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Script para Detener Servicios de windows
« Respuesta #6 en: 9 Septiembre 2015, 11:10 am »

Porque razón/es es mejor utilizar otro lenguaje diferente del batch? Cual me aconsejas que utilize para hacer estas cosas y porque?

Por muchas razones que no caben en un libro, pero yo principálmente lo recomiendo por la reducción de código y tiempo que supone desarrollar en otros lenguajes. Claro ...si migrases a un lenguaje orientado a objetos entonces vas a encontrar la gloría en comparación con el patoso Batch.

Por ejemplo Batch, o mejor dicho la aplicación externa SC.exe (o WMIC.exe) no te permite tener ningún tipo de control real sobre el estado de los servicios, cosa que podrías elaborar de forma muy sofisticada con C#/VB.Net. Solo por ponerte un ejemplo acorde a este problema.



Cual me aconsejas que utilize para hacer estas cosas y porque?

Te respondo a tu pregunta mostrándote una cita reciente:

Dentro de los lenguajes integrados en Windows, si simplemente buscas algo más o menos tan sencillo cómo Batch ...pero que le da mil vueltas, ese lenguaje sería VisualBasicScript (VBS) (aunque es otro lenguaje muy limitado también), y luego le seguiría PowerShell (PS).

Si tu intención es aprender programación, entonces ninguno de esos lenguajes sería una buena opción, puedes empezar por Ruby o Python por ejemplo en lo referente al Scripting. Pero no te guies por una simple opinión cómo la mía, el mejor lenguaje siempre será aquél con el que más agusto te sientas (al escribi la sintaxis) y con el que puedas realizar todas las tareas que necesites hacer. Pero prueba algo distinto a Batch para comparar, hazme caso en eso.

Mi primer lenguaje fue Batch ...hace muchos años ya, por ese motivo entiendo que una persona no puede ser consciente de la mierd@ que supone Batch y de todos los inconvenientes, innecesarios inconvennientes por los que estás pasando para hacer cualquier código hasta que descubras un lenguaje de verdad.



Para que cosas utilizas el batch?

No utilizo Batch absolutamente para nada (excepto para mostrar ejemplos de ayuda en el foro), cuando lo utilizaba era más o menos para llevar a cabo tareas similares...relacionadas con el sistema, pero todo lo que explico es de memoria ...no por tener práctica usándolo diariamente xD (aunque la práctica la tengo adquirida iguálmente cuando lo aprendí), ya que es un lenguaje simple y sencillo, se aprende y con el paso de los años es como montar en bici, todo se recuerda.

Saludos!
« Última modificación: 9 Septiembre 2015, 11:25 am por Eleкtro » En línea

dracrac

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Script para Detener Servicios de windows
« Respuesta #7 en: 9 Septiembre 2015, 11:28 am »

Muchas Gracias a los dos por la ayuda!!  ::)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Detener servicios.
Programación Visual Basic
Gorky 2 1,728 Último mensaje 20 Febrero 2006, 20:04 pm
por Gorky
iniciar y detener servicios de windows
Windows
XxTheCochixX 3 5,577 Último mensaje 2 Enero 2011, 06:37 am
por XxTheCochixX
aplicacion para detener apagado de windows « 1 2 3 »
Programación Visual Basic
iubens 24 9,589 Último mensaje 5 Enero 2011, 15:22 pm
por iubens
Detener servicios de windows
.NET (C#, VB.NET, ASP)
The_Saint 4 5,916 Último mensaje 30 Abril 2013, 13:06 pm
por Eleкtro
detener ejecucion script php hasta que se envie correo
Desarrollo Web
astrojohan 4 2,699 Último mensaje 11 Diciembre 2017, 15:12 pm
por [u]nsigned
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines