Pergunta

Preciso instalar remotamente o serviço do Windows em vários computadores, então uso CreateService() e outras funções de serviço do winapi.Conheço a senha de administrador e o nome de usuário das máquinas às quais preciso acessar.Para obter acesso à máquina remota, represento o processo de chamada com a ajuda do LogonUser assim:

//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

Então, obtenho acesso à máquina em um domínio, mas alguns computadores estão fora do domínio.Em máquinas fora do domínio esse código não funciona.Existe alguma maneira de acessar o gerenciador de serviços em uma máquina fora do domínio?

Foi útil?

Solução

Você pode fazer isso, a conta precisa existir na máquina remota e você precisa usar o nome da máquina para o nome de domínio na chamada LogonUser.

Outras dicas

Em vez de criar o seu próprio, por que não usar apenas o comando integrado do SC?

OK, problema resolvido (não muito bom, mas sim OK).Usei WNetAddConnection() para ipc$ na máquina remota.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top