SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: orosello en Viernes 4 de Mayo de 2007, 17:47
-
Hola:
Estoy tratando de instalar un servicio en Vs C++. En la maquina local lo instala perfectamente, pero cundo trato de acceder a una maquina remota mediante la funcion
SC_HANDLE schSCManager = OpenSCManager( ipaddres, NULL,
SC_MANAGER_CREATE_SERVICE);
para luego instalar o crear el servico mediante
SC_HANDLE schService = CreateService(..........)
el schSCManager siempre toma valor cero es decir que no se puede conectar, si alguien a desarrollado algo sobre esto le agredeceria que me diera una ayuda.
Saludos Orosello
-
Primero comproba que el primer parametro segun la MSDN debe ser:
Pointer to a null-terminated string that specifies the name of the target computer. If the pointer is NULL or points to an empty string, the function connects to the service control manager on the local computer.
Si acepta IPs entonces comproba esto:
¿GetLastError es ERROR_ACCESS_DENIED? ¿Tenes permisos para hacer esto en esa
maquina?
-
Ya me docunte un poquito, y el problema es a la hora de OpenSCManager(...). Yo tengo un user y pass de la PC a la que se lo quiero instalar, pero la esta primera funcion no se le pasan estos valores (se le pasan a la CreateServices(...)) pero cundo compruebo si esta esatblecida la cene.. con el service control manager simpre me da cero este valor.
No se si me he explicado correctamete
-
Ya me docunte un poquito, y el problema es a la hora de OpenSCManager(...). Yo tengo un user y pass de la PC a la que se lo quiero instalar, pero la esta primera funcion no se le pasan estos valores (se le pasan a la CreateServices(...)) pero cundo compruebo si esta esatblecida la cene.. con el service control manager simpre me da cero este valor.
No se si me he explicado correctamete
Te estaba hablando de esa funcion.
Primero comproba que el primer parametro segun la MSDN debe ser:
Pointer to a null-terminated string that specifies the name of the target computer. If the pointer is NULL or points to an empty string, the function connects to the service control manager on the local computer.
Si acepta IPs entonces comproba esto:
¿GetLastError es ERROR_ACCESS_DENIED? ¿Tenes permisos para hacer esto en esa
maquina?
En cuanto al nombre de usuario y clave que comentas son para especificar la cuenta bajo la cual sera ejecutado el servicio.
-
Mira no entiendo bien el mensaje que me quieres hacer llegar pero lo que hago es lo siguiente.
void InstallService(char* servicename)
{
SC_HANDLE schSCManager = OpenSCManager( ipaddres, NULL,
SC_MANAGER_CREATE_SERVICE);
if (schSCManager == 0)
{
long nError = GetLastError();
char pTemp[121];
sprintf(pTemp, "OpenSCManager failed, error code = %\n", nError);
}
else
{
SC_HANDLE schService = CreateService(....)
}
}
a create services le paso los parametros que este lleva (ya lo he probado local y lo instala a la perfeccion) y no trabaja como deberia.
-
a create services le paso los parametros que este lleva (ya lo he probado local y lo instala a la perfeccion) y no trabaja como deberia.
Olvidate de CreateService por ahora, sin el HANDLE al SCManager no la podes llamar.
El codigo, asi tal cual lo pegaste, esta mal ya que te falta un tipo despues del % (por ejemplo d) pero ya mismo podrias comprobar si nError es 5 (ERROR_ACCESS_DENIED).
-
Muchas gracias por su ayuda y el tiempo que me dedico,me sirvio mucho sus consejos para darme de cuenta de lo que me faltaba. Ya puede instalarlo en el PC remoto. todo parece indicar que hay que establecer una preconexion con la maquina antes de llamar a la funcion OpenSCManager().
Una vez mas Gracias
Saludos.
-
Muchas gracias por su ayuda y el tiempo que me dedico,me sirvio mucho sus consejos para darme de cuenta de lo que me faltaba. Ya puede instalarlo en el PC remoto. todo parece indicar que hay que establecer una preconexion con la maquina antes de llamar a la funcion OpenSCManager().
De nada B)