Pregunta

Necesito instalar de forma remota el servicio de Windows en varias computadoras, por eso uso CreateService() y otras funciones de servicio de winapi.Conozco la contraseña de administrador y el nombre de usuario de las máquinas a las que necesito acceder.Para obtener acceso a la máquina remota, me hago pasar por el proceso de llamada con la ayuda de LogonUser de esta manera:

//all variables are initialized correctly  
int status = 0;        
status = LogonUser(lpwUsername,        
               lpwDomain,         
                   lpwPassword,          
                   LOGON32_LOGON_NEW_CREDENTIALS,       
                   LOGON32_PROVIDER_DEFAULT,   
                   &hToken);            


if (status == 0)    
{   
         //here comes a error  
}  

status = ImpersonateLoggedOnUser(hToken);     
if (status == 0)                
{     
    //once again a error     
}      

//ok, now we are impersonated, do all service work there

Entonces, obtengo acceso a la máquina en un dominio, pero algunas computadoras están fuera del dominio.En máquinas que están fuera del dominio, este código no funciona.¿Hay alguna forma de acceder al administrador de servicios en una máquina fuera del dominio?

¿Fue útil?

Solución

Puede hacerlo, la cuenta debe existir en la máquina remota y debe usar el nombre de la máquina para el nombre de dominio en la llamada LogonUser.

Otros consejos

En lugar de utilizar el suyo propio, ¿por qué no utilizar el comando integrado SC?

Bien, problema resuelto (no muy bien, pero sí bien).Usé WNetAddConnection() para ipc$ en una máquina remota.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top