1

PSExecのようなサードパーティのソフトウェアを使用せずに、リモートコンピュータ(ドメイン環境で、すべての資格情報を知っている)でプログラムを起動する方法を見つけようとしています。

問題は、インタラクティブに実行する必要があるということです。(そして、最良の場合、現在ログインしているユーザーコンテキストで実行する必要があります)私はWMIを知っており、WMIを使用してプロセスを開始できることは知っていますが、対話型ではありません。(スケジュールされたタスクを使用して対話型プロセスを開始できますが、システムプロセスとして実行され、システム特権(?)があります)

ここで、IT技術者がシステムを監視するためのC#アプリケーションを作成したいとします。ソフトウェアをインストールせずに、IT技術者がリモートでプログラムを開始できるようにするために使用できる手法はありますか。

または、言い換えると、WMIでスケジュールされたプロセス以外に何かありますか?

4

1 に答える 1

1

これがあなたのための解決策であるならば、あなたはおそらくPSExecがすることをあなた自身でプログラムすることができます。PSExecの動作をよく覚えている場合は、管理共有(\\ PCNAME \ ADMIN $ \ TEMPなど)を使用してリモートシステムで実行するファイルをコピーすることから始めます。必要に応じて、右側のリモートコンピューターに接続できます。関数を使用したクレデンシャルWNetAddConnection2())。リモートマシンにコピーしたファイルをシステムサービスとして実行できる場合(作成する場合はそうなる可能性があります)、を使用しOpenSCManager()て起動できます。サービスはインタラクティブモードで実行できます(サービスをシステムアカウントとして実行する必要があるフラグを参照してください)。その後、サービスは、おそらく実行中のプロセスの1つから取得したトークンを使用して、ログオンしたユーザーになりすますことができます。CreateService()StartService()SERVICE_INTERACTIVE_PROCESSImpersonateLoggedOnUser()OpenProcessToken()、しかし私はこれが機能するかどうかを確認しようとしたことはありません。

于 2013-03-25T15:26:44.833 に答える