Удаленная установка службы Windows - PullRequest
0 голосов
/ 15 сентября 2008

Мне нужно удаленно установить службу Windows на нескольких компьютерах, поэтому я использую CreateService () и другие функции службы из winapi. Я знаю пароль администратора и имя пользователя для машин, к которым мне нужен доступ. Чтобы получить доступ к удаленной машине, я олицетворяю вызывающий процесс с помощью LogonUser следующим образом:

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

Итак, я получаю доступ к машине в домене, но некоторые компьютеры находятся вне домена. На машинах вне домена этот код не работает. Есть ли способ получить доступ к диспетчеру служб на компьютере вне домена?

Ответы [ 3 ]

2 голосов
/ 15 сентября 2008

Вы можете сделать это, учетная запись должна существовать на удаленной машине, и вам нужно использовать имя машины для имени домена в вызове LogonUser.

0 голосов
/ 22 сентября 2008

ОК, проблема решена (не очень хорошо, а скорее ОК). Я использовал WNetAddConnection () для ipc $ на удаленной машине.

0 голосов
/ 19 сентября 2008

Вместо того, чтобы кататься самостоятельно, почему бы просто не использовать встроенную команду SC?

...