Question

Je dois installer le service Windows à distance sur plusieurs ordinateurs. J'utilise donc CreateService () et d'autres fonctions de service de Winapi. Je connais le mot de passe administrateur et le nom d'utilisateur des machines auxquelles j'ai besoin d'accéder. Afin d'accéder à la machine distante, j'emprunte l'identité du processus d'appel à l'aide de LogonUser, comme suit:

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

Donc, je peux accéder à la machine dans un domaine, mais certains ordinateurs sont hors du domaine. Sur les machines hors domaine, ce code ne fonctionne pas. Existe-t-il un moyen d'accéder au gestionnaire de services sur une machine hors domaine?

Était-ce utile?

La solution

Vous pouvez le faire, le compte doit exister sur la machine distante et vous devez utiliser le nom de la machine pour le nom de domaine dans l'appel LogonUser.

Autres conseils

Plutôt que de lancer le vôtre, pourquoi ne pas simplement utiliser la commande intégrée SC?

OK, problème résolu (pas vraiment très bon, mais plutôt OK). J'ai utilisé WNetAddConnection () to ipc $ sur une machine distante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top