PDA

Ver la Versión Completa : no permitir, que me paren el servicio


l30
28-06-2007, 06:39:56
Hola amigos,

Estoy desarrollando una aplicación que es un servicio, el programa correo bien, pero tengo el siguiente problema y es que el servicio se puede parar. Me explico mejor, hay servicio que se pueden parar y otros no por ejemplo la mayoría de los antivirus no se le puede parar el servicio, ya que tienen deshabilitada esa opción. Como puedo hacer para que mi servicio no se pueda parar.

Gracias por adelantado, espero haberme explicado bien.

delphi.com.ar
28-06-2007, 14:30:00
La clase TService tiene una propiedad llamada AllowStop, si esta propiedad es falsa no se puede detener "amigablemente" el servicio.

Saludos!

l30
01-07-2007, 19:24:45
Muchas gracias por la ayuda, era eso mismo lo que pasaba. Pero ahora tengo el siguiente problema, es que el servido tiene una propiedad llamada Startup Type que acepta tres parámetros
1-Automatic
2-Manual
3-Disabled
Estas tres propiedades se pueden modificar, y no quiero que sea así, por ejemplo, mi antivirus cuando trato de cambiarle esa propiedad, me da acceso denegado, aunque este por una cuenta administrativa y quiero que mi servicio haga lo mismo.


Por adelantado muchas gracias.:D

l30
03-07-2007, 21:14:50
Por favor que alguien me ayude.

gabrielkc
03-07-2007, 21:42:43
Porque no haces algo parecido a la idea de Firebird

el fbServer es el servicio de la base de datos pero tiene un guardaespaldas
el fbGuardian, este servicio está alerta para cuando el fbserver se detenga el lo inicia de nuevo.

Por supuesto que si detienes primero el fbguardian pues matas al guardaespaldas y puedes darle con todo al protegido.

l30
03-07-2007, 22:21:01
Si, así es exactamente como esta funcionando en este caso, el servicio es el que esta verificando si la otra aplicación esta, si no, la inicia, pero es que entonces matan el servicio y se judío la cosa.

gabrielkc
03-07-2007, 23:15:20
A OK entonces lo que tienes que hacer es establecer los permisos a la llave del registro que representa tu servicio:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tu servicio

La asignación de permisos si no mal recuerdo lo puedes hacer con un TRegistryObject (el cual no he usado), los componentes los puedes descargar de aca:

http://www.wilsonc.demon.co.uk/delphi_6.htm

el TRegistryObject no es un componente es solo una clase declarada en la Unidad unitNTSecurity del package NTUtils....... espero que te ayude.

Además vienen algunos componentes bastante atractivos.

l30
04-07-2007, 02:25:18
Gracias gabrielkc, voy a bajarme la clase para revisarla y ver si me resuelve el problema.