別のスレッドをチェックしました (Windowsにログオンすると自動的にスクリプトを実行します) 、しかしそれは私の正確な問題を解決しませんでした。
接続が確立されたときにスクリプトを実行する必要がありますネットワーク全体 Windowsリモートデスクトップ接続を使用します。
上記のスレッドは初期ログインで機能しますが、ログアウトしないと(ネットワーク上で実行されている一部のプロセスに必要です)、実行されません再度スクリプト次に誰かがリモートデスクトップ接続を使用してシステムに接続したとき。以前はこれを実現するためにpcAnywhereを使用していましたが、pcAnywhereでグラフィックの問題が発生した後、pcAnywhereからRDCに移行することにしました。
背景:特定のマシンに接続するたびに、電子メールを送信する必要があります。ログイン名はこれらのシステムで常に同じであり、接続を閉じるときにログオフしません。
私の知る限り、Windowsはconnectionでプログラムまたはスクリプトを実行するための組み込みメソッドを提供せず、ログオンするだけです。 ( WTSRegisterSessionNotification を使用して)Windowsに登録し、 WM_WTSSESSION_CHANGE メッセージをリッスンするプログラムを見つける必要があります。
上記を実行するプログラムは、ユーザーのログオン、ログオフ、接続、切断、および接続時にスクリプトを起動してログオンするために必要なすべてのイベントに関する通知をWindowsから受信します。
頭のてっぺんから、これを実行できるアプリケーション(pcAnywhere以外)を知りません。
新しいスケジュールされたタスクを作成し、「ユーザーセッションへの新しい接続の瞬間」にトリガーを定義できます。
注:質問に「XP」/「Server2008」のタグが付けられていることに気づきました。ここにあるものは、Vista/2008R2以降でのみ機能する可能性があります。
Windowsタスクスケジューラには、そのための事前定義されたトリガーがあります。という On connection to user session
。
また、ユーザー間やローカル接続またはリモート接続を区別することもできます。
このトリガーを作成するときのデフォルト:Any user
およびConnection from remote computer
。これはあなたが望むもののようですので、それを変更する必要はありません。
出典:Microsoft TechNet: タスクスケジューラ|トリガー (アーカイブ済み ここ 。)
このタスクをエクスポートしてからファイル内を見ると、これがタイプSessionStateChangeTrigger
のトリガーであることがわかります: MSDNには詳細なドキュメントがあります:
SessionStateChangeTrigger object
(アーカイブ ここ 。)SessionStateChangeTrigger.StateChange property
(アーカイブ ここ 。).netでのプログラミングに精通している場合は、 Stack Overflowのこのスレッド を確認することをお勧めします。
スティーブンA.ロウによると:
伝えられるところでは、
System.Windows.Forms.SystemInformation.TerminalServerSession
リモートデスクトップセッション(またはVNCセッション)の場合はtrueになります
RDPで接続を監視できる場合もあります。これは、デフォルトではTCP 3389です。