Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-12-2011
Avatar de KingOfDragons
KingOfDragons KingOfDragons is offline
Miembro
 
Registrado: abr 2008
Ubicación: culiacan, sinaloa
Posts: 72
Poder: 17
KingOfDragons Va por buen camino
servicios para Windows

Buenas tardes y gracias a todos por su atención, estoy haciendo un servicio de windows para que me notifique cada vez que hay un cambio en una base de datos el problema es que no logro hacer que este servicio inicie de forma automática al iniciar el equipo ya intente haciendo un comando mediante ms-dos pero da la casualidad que el usuario no tiene permisos de administrador y no me deja utilizar este comando y con el comando runas me pide contraseña y no se como ponerla de forma automática, no se si estoy programando algo mal o como puedo forzar a windows a que inicie este servicio.

Les paso el codigo que tengo en el servicio:

Código Delphi [-]
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  NotificacionesCeri.Controller(CtrlCode);
end;

function TNotificacionesCeri.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TNotificacionesCeri.ServiceAfterInstall(
  Sender: TService);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create(KEY_READ or KEY_WRITE);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\' + Name, false) then
    begin
      Reg.WriteString('Description', 'Esta aplicacion envia notificaciones a diferentes personas de las novedades registradas');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;

procedure TNotificacionesCeri.ServiceCreate(
  Sender: TObject);
begin
  ADOQuery1.Open;
  r:=ADOQUery1.RecordCount;
end;

procedure TNotificacionesCeri.ServiceExecute(
  Sender: TService);
begin
temporizador.Enabled := True;
  while not Terminated do
    ServiceThread.ProcessRequests(True);
  temporizador.Enabled := False;
end;

procedure TNotificacionesCeri.temporizadorTimer(
  Sender: TObject);
begin
  Consulta;
end;

Muchas gracias a todos por su apoyo

Saludos
__________________
Dime y lo olvido, enséñame y lo recuerdo, involúcrame y lo aprendo
Responder Con Cita
  #2  
Antiguo 29-12-2011
Avatar de thecidmx
thecidmx thecidmx is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 93
Poder: 13
thecidmx Va por buen camino
Post espero te sirva

Cuando necesitemos ejecutar alguna aplicación como un servicio de Windows podemos usar srvany. Esto significa “Run any program as a service”, srvany es un proceso genérico de Windows NT/2000/XP que permite que cualquier programa se ejecute como un servicio mas.

Lo que debemos hacer para lograr esto es lo siguiente:

1- srvany viene incluido en el Microsoft Windows NT Resource Kit junto con otras aplicaciones que sirven para realizar tareas administrativas, de automatización e instalación de software y demás. Podemos descargarnos el Kit entero desde aqui o simplemente podemos descargarnos la aplicación que nos interesa en este momento (srvany) desde esta
dirección.

2- Una vez que ya tengamos los archivos necesario (srvany.exe e instsrv.exe) lo siguiente es hacer que nuestro programa corra como un servicio mas, para ello pondremos a los archivos que descargamos juntos en un directorio. Luego abriremos una ventana de Símbolo de Sistema de MS-DOS (Inicio –> Ejecutar –> cmd) y navegaremos hasta el directorio donde tenemos los archivos que descargamos. Una vez allí escribiremos los siguientes comandos:

ruta\INSTSRV.EXE [mi servicio] ruta\SRVANY.EXE

Para no tener problemas en donde dice ruta pongan la ruta del directorio en el que estan los archivos junto con la letra asignada a la unidad. [mi servicio] es el nombre del servicio que deseamos correr. Puede ser cualquier nombre pero es recomendable que sea descriptivo. Si todo salio bien nos mostrara un mensaje diciéndonos que el servicio fue agregar satisfactoriamente.

Para asegurarnos que fue así debemos revisar el Registro de Windows, para realizar esto abriremos el Editor de Registro (Inicio –> Ejecutar –> regedit) y nos posicionaremos en la siguiente clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[mi servicio]

Si podemos ubicar el servicio creado anteriormente es porque todo salio bien.

3- Ahora seleccionaremos nuestro servicio, luego nos dirigimos al menú Edición –> Nuevo –> Clave, el nombre que le pondremos es “Parameters”. Seleccionaremos la clave “Parameters” y nos dirigimos nuevamente al menú Edición –> Nuevo –> Valor alfanumérico y le ponemos el nombre “Application”, veremos que se agrega este valor lo seleccionamos y hacemos clic con el botón derecho y seleccionamos “Modificar” y en “Información del valor” pondremos la ruta completa de la aplicación con la extensión.

ejemplo: C:\Archivos de programa\aplicacion\miaplicacion.exe

4- Cerramos el Editor de Registro.

Por defecto un servicio creado recientemente esta configurado para que inicie la próxima vez que se reinicie el sistema, si deseamos configurarlo para que lo haga en este momento o cambiar la forma en que inicia el mismo a Manual por ejemplo lo podemos hacer desde la ventana de Servicios (Inicio –> Ejecutar — > services.msc)

NOTA: para borrar un servicio agregado lo que debemos hacer es abrir una ventana de Símbolo de Sistema de MS-DOS y dirigirnos al directorio donde tenemos los archivos que descargamos, una vez ahí escribimos lo siguiente:

INSTSRV.EXE [nombre del servicio] REMOVE


NOTA: este procedimiento fue probado en Windows 2000/XP/2003 Server, no fue probado en Vista y el archivo SRVANY.EXE debe quedar siempre en el mismo directorio mientras el servicio este corriendo, de lo contrario no funcionara, alguna aplicaciones deben recibir parámetros al momento de ejecutarlas, asegúrese de que sea así al momento de agregar el servicio,

Nota importante : debe poseer permisos de Administrador para realizar este proceso.

Espero que sea de utilidad saludos
__________________
La mejor forma de aprender es, compartir el conocimiento adquirido.

Última edición por thecidmx fecha: 29-12-2011 a las 19:41:35.
Responder Con Cita
  #3  
Antiguo 29-12-2011
Avatar de thecidmx
thecidmx thecidmx is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 93
Poder: 13
thecidmx Va por buen camino
Post link de descarga

http://www.microsoft.com/latam/techn...estrella2.mspx, de ahi bajas el programa q necesitas, si no tienes acceso a la maquina del cliente, lo puedes hacer desde una aplicacion que realize el comando q instale la aplicacion como servicio, y para ejecutar ese programa q el usuario lo ejecute como administrador.
__________________
La mejor forma de aprender es, compartir el conocimiento adquirido.
Responder Con Cita
  #4  
Antiguo 29-12-2011
Avatar de KingOfDragons
KingOfDragons KingOfDragons is offline
Miembro
 
Registrado: abr 2008
Ubicación: culiacan, sinaloa
Posts: 72
Poder: 17
KingOfDragons Va por buen camino
No se si sea lo mismo que yo estoy haciendo a lo que tu me explicas yo solo uso la linea 'Notificaciones.exe /install' y me funciona y si aparece como servicio pero siempre que reinicio el equipo se detiene sin importar si lo tengo en automatico, lo reviso el registro y tambien aparece la ruta y todo pero no se si existe algo mas que hacer para forzar a que inicie

Saludos.
__________________
Dime y lo olvido, enséñame y lo recuerdo, involúcrame y lo aprendo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
API de Windows para servicios gastontt API de Windows 0 05-03-2011 18:34:09
Servicios de Windows erickahr Windows 1 31-05-2010 18:09:39
Servicios de Windows cacu OOP 2 21-11-2008 01:12:26
Servicios en Windows sancarlos API de Windows 10 06-11-2008 12:44:40
Servicios de Windows Eklypsex API de Windows 3 31-10-2008 19:30:13


La franja horaria es GMT +2. Ahora son las 08:10:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi