Instalação remota do serviço Windows
-
09-06-2019 - |
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?
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.