Installation à distance du service Windows
-
09-06-2019 - |
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?
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.