0

そのプログラムのみを実行し、リモートマシンへの他のアクセスを許可しないように設定された、リモートデスクトップ接続でのみ使用される短いプログラムがあります。以前は、プログラムを終了して接続を終了させましたが、非常に遅いため、プログラムの実行が終了したときにリモートセッションを終了する次のコードを記述しました。

    [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接続ファイルを使用してリモート処理しているユーザーが使用する場合に正常に機能します。プログラムの実行後、接続は終了します。ただし、このプログラムをテストおよびデバッグする場合、実行するたびにコンピューターが再起動します。

私はこれらのケースを区別するための良い方法を探しています。プログラムをリモートで実行してリモートで実行する、ある種のデバッグスクリプトを設定する必要がありますか?または、プログラムがデバッグモードで実行されているかどうかをプログラムで検出し、その場合は終了手順を無効にする方法はありますか?

4

1 に答える 1