Windowsサービスのリモートインストール
-
09-06-2019 - |
質問
多数のコンピューターに 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、問題は解決しました(実際にはあまり良くありませんが、むしろOKです)。リモートマシン上の ipc$ に WNetAddConnection() を使用しました。
所属していません StackOverflow