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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Detener servicios de windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Detener servicios de windows  (Leído 6,174 veces)
The_Saint

Desconectado Desconectado

Mensajes: 74


Ezo


Ver Perfil
Detener servicios de windows
« en: 22 Abril 2013, 17:12 pm »

Buenas el caso es que estoy haciendo un aplicación de consola, para un rotado de Log,pero me falla el parado de los servicios y no entiendo el porque,me pueden orientar.

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceProcess;

namespace ServiceProcess
{
    class Program
    {
       
        static void Main(string[] args)
        {
            string nameservice;
            nameservice = "KMService";
            Console.WriteLine("Deteniendo servicio");
            Detener(nameservice);
            Console.WriteLine("Servicio detenido");     
            Console.ReadKey();
           

        }
        static void Detener(string nameservice)
        {
            string serviceName = nameservice;
            ServiceController service = new ServiceController(serviceName);
            int timeoutMilliseconds = 5000;
            TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
            service.Stop(); //AQUI FALLA
            service.WaitForStatus(ServiceControllerStatus.Running, timeout);
               
           

        }

    }
         
}

Saludos


En línea

<< Si piensas que eres demasiado pequeño para tener impacto.
Prueba a irte a la cama con un mosquito>>
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Detener servicios de windows
« Respuesta #1 en: 23 Abril 2013, 01:15 am »

Claro, no puedes iniciar un servicio que ya se encuentra iniciado, ni detener uno que ya está detenido.

De todas formas no dás ningún detalle acerca del error, solo dices que "falla", podrías haber mostrado la excepción porque no somos magos para adivinar lo que ocurre.

Pero deduzco que el problema es ese porque en tu código no compruebas el estado del servicio. solo puede ser eso, o que el servicio no se pueda detener por alguna dependencia.

Usa un convertidor online de VBNET a C# con esta función que hice, y listo:

Código
  1. #Region " Change Service Status "
  2.  
  3.    ' [ Change Service Status Function ]
  4.    '
  5.    ' // By Elektro H@cker
  6.    '
  7.    ' Instructions :
  8.    ' Add a reference for "System.ServiceProcess"
  9.    '
  10.    ' Examples :
  11.    ' MsgBox(Change_Service_Status("Temas", Service.StopIt))
  12.    ' MsgBox(Change_Service_Status("Temas", Service.RunIt, True))
  13.  
  14.    Public Enum Service
  15.        RunIt = True
  16.        StopIt = False
  17.    End Enum
  18.  
  19.    Function Change_Service_Status(ByVal ServiceName As String, _
  20.                                   ByVal Run As Service, _
  21.                                   Optional Wait As Boolean = False) As Boolean
  22.  
  23.        Try
  24.            Dim Service As New System.ServiceProcess.ServiceController(ServiceName)
  25.  
  26.            Select Case Service.Status
  27.                Case System.ServiceProcess.ServiceControllerStatus.Stopped And Run
  28.                    Service.Start()
  29.                    If Wait Then Service.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running)
  30.                Case System.ServiceProcess.ServiceControllerStatus.Running And Not Run
  31.                    Service.Stop()
  32.                    If Wait Then Service.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped)
  33.            End Select
  34.  
  35.            Service.Dispose()
  36.            Return True
  37.  
  38.        Catch ex As Exception
  39.            ' Throw New Exception(ex.Message)
  40.            Return False
  41.        End Try
  42.  
  43.    End Function
  44.  
  45. #End Region


Saludos.


« Última modificación: 23 Abril 2013, 01:30 am por EleKtro H@cker » En línea



The_Saint

Desconectado Desconectado

Mensajes: 74


Ezo


Ver Perfil
Re: Detener servicios de windows
« Respuesta #2 en: 23 Abril 2013, 14:17 pm »

El error que me da es este,http://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=EN-US&k=k(EHInvalidOperation);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true, en Visual Basic.Net ya lo hice en su dia pero quería aprender en C#:


Saludos. ::)
En línea

<< Si piensas que eres demasiado pequeño para tener impacto.
Prueba a irte a la cama con un mosquito>>
The_Saint

Desconectado Desconectado

Mensajes: 74


Ezo


Ver Perfil
Re: Detener servicios de windows
« Respuesta #3 en: 24 Abril 2013, 12:10 pm »

Bueno para quien le interese,es que la libreria System.ServiceProcess no funciona en 64 bits,lo he probado en 32 bits y funciona perfectamente. No se si es porque es windows 8 o por que el sistema es 64 bits.
¿sabeis como se pueden buscar la libreria similar en 64 bits?
Valdria esta ?http://es.originaldll.com/file/system.serviceprocess.resources.dll/8270.html
Donde se pondria?
En el caso que se llamen igual se puede renombrar añadiendo 64 bits al final?

Saludos.
En línea

<< Si piensas que eres demasiado pequeño para tener impacto.
Prueba a irte a la cama con un mosquito>>
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Detener servicios de windows
« Respuesta #4 en: 30 Abril 2013, 13:06 pm »

Bueno para quien le interese,es que la libreria System.ServiceProcess no funciona en 64 bits,lo he probado en 32 bits y funciona perfectamente. No se si es porque es windows 8 o por que el sistema es 64 bits.

Hola, solo quiero decirte que lo de los 64bits es una tontería, yo uso Windows 7 de 64 bits y como ves te mostré un código funcional.
Lo de que no te funcione porque séa Windows 8 también parece otra tontería, si no fuesen compatible las classes del FW en Windows 8 sería para darle una tremenda hostia a Microsoft, pero eso ya no te lo puedo confirmar.

un saludo!

EDITO: Quizás si pruebas mi aplicación te pueda sacar de dudas si la "System.Serviceprocess" funciona en Win8 de 64 bits o no: http://foro.elhacker.net/net/aporte_aeroswitcher-t389187.0.html;msg1849223#msg1849223
« Última modificación: 30 Abril 2013, 13:58 pm por EleKtro H@cker » 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,874 Último mensaje 20 Febrero 2006, 20:04 pm
por Gorky
iniciar y detener servicios de windows
Windows
XxTheCochixX 3 5,805 Ú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 10,346 Último mensaje 5 Enero 2011, 15:22 pm
por iubens
Script para Detener Servicios de windows
Scripting
dracrac 7 4,811 Último mensaje 9 Septiembre 2015, 11:28 am
por dracrac
Cómo detener la descarga automática de Windows 10 en Windows 7 y 8.1
Noticias
wolfbcn 0 1,632 Último mensaje 12 Septiembre 2015, 13:55 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines