题
我需要在多台计算机上远程安装 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
因此,我可以访问域中的计算机,但有些计算机不在域中。在域外的计算机上,此代码不起作用。有没有办法访问域外机器上的服务管理器?
解决方案
您可以这样做,该帐户需要存在于远程计算机上,并且您需要在 LogonUser 调用中使用计算机名作为域名。
其他提示
与其自己动手,为什么不直接使用 SC 内置命令呢?
好的,问题解决了(不是很好,但是还可以)。我在远程计算机上使用 WNetAddConnection() 到 ipc$ 。
不隶属于 StackOverflow