多数のコンピューターに 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
そのため、ドメイン内のマシンにアクセスできますが、一部のコンピューターはドメイン外です。ドメイン外のマシンでは、このコードは機能しません。ドメイン外のマシンでサービス マネージャーにアクセスする方法はありますか?