【问题标题】:Remote installing of windows service远程安装windows服务
【发布时间】:2010-09-08 21:59:23
【问题描述】:

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

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

【问题讨论】:

    标签: c++ windows windows-services


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        可以,账户需要在远程机器上存在,并且需要在LogonUser调用中使用机器名作为域名。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-19
          • 2015-11-04
          • 1970-01-01
          相关资源
          最近更新 更多