远程安装Windows服务

时间:2020-03-05 18:53:21  来源:igfitidea点击:

我需要在多台计算机上远程安装Windows服务,因此我使用Winapi中的CreateService()和其他服务功能。我知道需要访问的计算机的管理员密码和用户名。为了获得对远程计算机的访问权限,我在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

因此,我可以访问域中的计算机,但是有些计算机不在域中。在域外的计算机上,此代码不起作用。有什么方法可以访问域外机器上的服务管理器?

解决方案

回答

我们可以执行此操作,该帐户必须存在于远程计算机上,并且需要在LogonUser调用中将计算机名用作域名。

回答

为何不自己滚动,为什么不只使用SC内置命令?

回答

OK,问题解决了(不是很好,但是还可以)。我在远程计算机上使用WNetAddConnection()来ipc $。