Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-01-2008
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
No me crea el SERVICIO

¿Alguien me puede explicar dónde está el error en esta función? En ella compruebo la existencia de un servicio y si no existe intento crearlo (¡y aquí está el error!)
Código Delphi [-]
function CrearServicioApache : boolean;
  var
    ServicioControl : SC_Handle;
    Servicio : SC_Handle;
    Path     : string;
begin
  Result := False;
  ServicioControl := OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
  if ServicioControl <> 0 then
  begin
    Servicio := OpenService(ServicioControl, 'Apache 2', SERVICE_ALL_ACCESS);
    if Servicio <> 0 then  
      CloseServiceHandle(Servicio)
    else  //no existe el servicio e intento crearlo
    begin
      path := '"c:\apache\apache2\bin\apache.exe" -k runservice';
      Servicio := CreateService(ServicioControl,
                               'Apache 2', 'Servidor Apache',
                               SC_MANAGER_ALL_ACCESS or SC_MANAGER_CREATE_SERVICE,
                               SERVICE_WIN32_OWN_PROCESS,
                               SERVICE_DEMAND_START,
                               SERVICE_ERROR_IGNORE,
                               PChar(Path), nil, nil, nil, nil, nil);
      if Servicio <> 0 then
      begin
        Result := True;
        CloseServiceHandle(Servicio);
      end;
    end;
    CloseServiceHandle(ServicioControl);
  end;
end;

Postdata: Sistema operativo WINDOWS XP

Última edición por jachguate fecha: 09-01-2008 a las 02:38:59. Razón: Etiqueta code
Responder Con Cita
  #2  
Antiguo 09-01-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Solo tengo una duda; si quieres instalar el servicio del apache; por que no ejecutas;

Código:
c:\apache\apache2\bin\apache.exe -k install -n Apache2.x
Responder Con Cita
  #3  
Antiguo 09-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola MON__

Edité tu mensaje para cambiar la etiqueta code por la etiqueta delphi

Como ves, el resultado queda mucho mejor.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 09-01-2008
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
Gracias, Jachguate. Efectivamente, ¡queda mucho mejor!
ChackAll, tienes razón y en eso había pensado; no obstante es la primera vez que me he encontrado con la creación de un servicio y no lo logro. Por más que reviso los argumentos dados en CreateService no encuentro el error. Digamos que en este punto el que sea APACHE es secundario. Ahora me preocupa sólo saber dónde cometo el error.

Por cierto: lo que estaba intentando era instalar el Apache (con PHP y MySQL) en una memoria Flash; al introducirla en un portátil (que no lo tiene instalado) lanzase una aplicación DELPHI que comprobase la existencia del servicio y, de no existir, lo crease.

¡Gracias a los dos! ¡Feliz año!

Última edición por MON___ fecha: 09-01-2008 a las 12:32:01.
Responder Con Cita
  #5  
Antiguo 09-01-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por MON___ Ver Mensaje
Gracias, Jachguate. Efectivamente, ¡queda mucho mejor!
ChackAll, tienes razón y en eso había pensado; no obstante es la primera vez que me he encontrado con la creación de un servicio y no lo logro. Por más que reviso los argumentos dados en CreateService no encuentro el error. Digamos que en este punto el que sea APACHE es secundario. Ahora me preocupa sólo saber dónde cometo el error.

Por cierto: lo que estaba intentando era instalar el Apache (con PHP y MySQL) en una memoria Flash; al introducirla en un portátil (que no lo tiene instalado) lanzase una aplicación DELPHI que comprobase la existencia del servicio y, de no existir, lo crease.

¡Gracias a los dos! ¡Feliz año!
Ok. el problema es simple; estas creando la conexión con el Administrador de servicios con el parametro SC_MANAGER_CONNECT, osea solo estas estableciendo una conexión con el mismo; pero no estas habiitando la opción de creación de servicios, utiliza:

Código Delphi [-]
 ServicioControl := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);

En el caso anterior estas habilitando la siguiente conbinación
Código Delphi [-]
STANDARD_RIGHTS_REQUIRED or 
SC_MANAGER_CONNECT or 
SC_MANAGER_CREATE_SERVICE or 
SC_MANAGER_ENUMERATE_SERVICE or 
SC_MANAGER_LOCK or 
SC_MANAGER_QUERY_LOCK_STATUS or 
SC_MANAGER_MODIFY_BOOT_CONFIG

Tambien hay un error en la constante de acceso en la creación del servicio, utiliza esto:

Código Delphi [-]
...
 
Servicio := CreateService(ServicioControl, 'Apache 2', 'Servidor Apache', SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
 
...

Saludos

Edito, y re-edito: había otro error

Última edición por cHackAll fecha: 09-01-2008 a las 19:30:38.
Responder Con Cita
  #6  
Antiguo 09-01-2008
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
¡Por fin! ¡Duda resuelta! ¡Gracias, cHackAll!
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
(fatal error) no me crea el exe douglas OOP 8 24-01-2012 18:04:56
Como arrancar o parara un servicio en funcion de otro servicio ?? QuarkBcn API de Windows 12 15-06-2011 14:46:11
¿Cómo se crea una pequeña dll? REHome OOP 6 24-10-2005 12:09:09
programa que crea programas JXJ Varios 4 06-09-2005 17:20:42
No me crea la bd al instalar davgoncam Oracle 8 07-03-2004 14:31:26


La franja horaria es GMT +2. Ahora son las 22:28:57.


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