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

OK、問題は解決しました (あまり良くはありませんが、むしろ OK)。リモートマシンで ipc$ に WNetAddConnection() を使用しました。

于 2008-09-22T13:46:16.277 に答える
0

自分で作成するのではなく、SC 組み込みコマンドを使用してみませんか?

于 2008-09-19T11:49:31.903 に答える