そのプログラムのみを実行し、リモートマシンへの他のアクセスを許可しないように設定された、リモートデスクトップ接続でのみ使用される短いプログラムがあります。以前は、プログラムを終了して接続を終了させましたが、非常に遅いため、プログラムの実行が終了したときにリモートセッションを終了する次のコードを記述しました。
[DllImport("wtsapi32.dll", SetLastError = true)]
static extern bool WTSLogoffSession(IntPtr hServer, int SessionId, bool bWait);
private IntPtr WTS_CURRENT_SERVER_HANDLE;
private const int WTS_CURRENT_SESSION = -1;
...
private void HardTerminalExit()
{
WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, false);
}
これは、このプログラムが実稼働環境にあり、特定のRDP接続ファイルを使用してリモート処理しているユーザーが使用する場合に正常に機能します。プログラムの実行後、接続は終了します。ただし、このプログラムをテストおよびデバッグする場合、実行するたびにコンピューターが再起動します。
私はこれらのケースを区別するための良い方法を探しています。プログラムをリモートで実行してリモートで実行する、ある種のデバッグスクリプトを設定する必要がありますか?または、プログラムがデバッグモードで実行されているかどうかをプログラムで検出し、その場合は終了手順を無効にする方法はありますか?