web-dev-qa-db-ja.com

WindowsRDC接続でアプリケーションまたはスクリプトを実行する

別のスレッドをチェックしました Windowsにログオンすると自動的にスクリプトを実行します 、しかしそれは私の正確な問題を解決しませんでした。

接続が確立されたときにスクリプトを実行する必要がありますネットワーク全体 Windowsリモートデスクトップ接続を使用します。

上記のスレッドは初期ログインで機能しますが、ログアウトしないと(ネットワーク上で実行されている一部のプロセスに必要です)、実行されません再度スクリプト次に誰かがリモートデスクトップ接続を使用してシステムに接続したとき。以前はこれを実現するためにpcAnywhereを使用していましたが、pcAnywhereでグラフィックの問題が発生した後、pcAnywhereからRDCに移行することにしました。

背景:特定のマシンに接続するたびに、電子メールを送信する必要があります。ログイン名はこれらのシステムで常に同じであり、接続を閉じるときにログオフしません。

8
Nick Larsen

私の知る限り、Windowsはconnectionでプログラムまたはスクリプトを実行するための組み込みメソッドを提供せず、ログオンするだけです。 ( WTSRegisterSessionNotification を使用して)Windowsに登録し、 WM_WTSSESSION_CHANGE メッセージをリッスンするプログラムを見つける必要があります。

上記を実行するプログラムは、ユーザーのログオン、ログオフ、接続、切断、および接続時にスクリプトを起動してログオンするために必要なすべてのイベントに関する通知をWindowsから受信します。

頭のてっぺんから、これを実行できるアプリケーション(pcAnywhere以外)を知りません。

3
Joshua

新しいスケジュールされたタスクを作成し、「ユーザーセッションへの新しい接続の瞬間」にトリガーを定義できます。

9
Laurent F

トリガー「ユーザーセッションへの接続時」を使用します

注:質問に「XP」/「Server2008」のタグが付けられていることに気づきました。ここにあるものは、Vista/2008R2以降でのみ機能する可能性があります。

Windowsタスクスケジューラには、そのための事前定義されたトリガーがあります。という On connection to user session

また、ユーザー間やローカル接続またはリモート接続を区別することもできます。

このトリガーを作成するときのデフォルト:Any userおよびConnection from remote computer。これはあなたが望むもののようですので、それを変更する必要はありません。

ここのスクリーンショット: Screenshot of trigger

出典:Microsoft TechNet: タスクスケジューラ|トリガー (アーカイブ済み ここ 。)

参考文献

このタスクをエクスポートしてからファイル内を見ると、これがタイプSessionStateChangeTriggerのトリガーであることがわかります: Trigger detail MSDNには詳細なドキュメントがあります:

1
StackzOfZtuff

.netでのプログラミングに精通している場合は、 Stack Overflowのこのスレッド を確認することをお勧めします。

スティーブンA.ロウによると:

伝えられるところでは、

System.Windows.Forms.SystemInformation.TerminalServerSession リモートデスクトップセッション(またはVNCセッション)の場合はtrueになります

RDPで接続を監視できる場合もあります。これは、デフォルトではTCP 3389です。

0
Jared Harley