0

我需要在多台计算机上远程安装 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

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

4

3 回答 3

2

您可以这样做,该帐户需要存在于远程机器上,并且您需要在 LogonUser 调用中使用机器名称作为域名。

于 2008-09-15T12:56:33.983 回答
0

与其自己动手,不如直接使用 SC 内置命令?

于 2008-09-19T11:49:31.903 回答
0

好的,问题解决了(不是很好,但还不错)。我在远程机器上使用 WNetAddConnection() 到 ipc$。

于 2008-09-22T13:46:16.277 回答