WindowsでRDP/RDSセッションの制限(タイムアウト)を構成する方法
切断されたRDP/RDSセッションの問題点
既定では、ユーザーがターミナルクライアント(mstsc.exe、RDCMan、Remote Desktop HTML5 Webクライアントなど)の右上にある「×」ボタンをクリックしてRDP/RDSセッションウィンドウを閉じると(ログオフ操作を行わずに)、そのセッションは切断済み(disconnected)状態になります。この状態でも、リモートデスクトップサーバー上ではアプリケーションや開いているファイル、ウィンドウが実行され続け、サーバーリソースを消費し続けます。
Windowsでは、ユーザーのRDPセッションは、ユーザー自身または管理者によって終了されるか、コンピューターが再起動されるまで、切断済み状態のまま残る可能性があります。これは便利な側面もあります。ユーザーはいつでも以前のリモートデスクトップセッションに再接続し、実行中のプログラムや開いていたファイルから作業を再開できるためです。
しかし、次のスクリーンショットのように、Windows Server 2016のRDSサーバー上の切断済みユーザーセッションが、サーバーメモリの約40%を消費しているケースもあります。さらに、これらのセッションはファイルサーバー上の開かれたファイルをブロックしたり、アプリケーションでのデータ保存の不具合、ローミングプロファイルフォルダーやユーザープロファイルディスク(UPD)に関する問題を引き起こすこともあります。

quserコマンドを使用すると、ユーザーのRDPセッションがいつ開始されたか、アイドル時間がどれほど経過しているか、現在のセッション状態を確認できます。

切断されたRDP/RDSセッションを一定時間後に自動的に終了させるには、セッション制限(タイムアウト)を適切に設定する必要があります。
RDSコレクション設定でセッションタイムアウトを構成する
RDSサーバーを使用している場合は、RDSコレクションの設定にある「セッション」タブでセッションタイムアウトのパラメータを構成できます。
切断されたリモートデスクトップセッションを強制終了するまでの時間は、「切断されたセッションの終了(End a disconnected session)」オプションで指定します(既定値は無期限 – Never)。また、アクティブセッションの最大時間(アクティブなセッションの制限)や、アイドルセッションの終了時間(アイドルセッションの制限)も設定できます。これらのハードタイムアウトは、RDSコレクション内のすべてのセッションに適用されます。

ユーザーアカウントのプロパティでRDPセッション制限を設定する
ローカルユーザー(lusrmgr.msc)またはドメインユーザー(dsa.msc — Active Directoryユーザーとコンピューター)のプロパティでも、RDPセッションの制限を設定できます。

なお、RDPセッションのタイムアウトを短く設定しすぎるのは避けましょう。短すぎると、ユーザーセッションが非アクティブになった直後に強制終了されてしまいます。
グループポリシーでRDPセッションのタイムアウトを構成する
Windows Server 2012 R2/2016/2019では、グループポリシーを使用してRDPセッションのタイムアウトを設定できます。ドメインGPOエディター(gpmc.msc)、またはRDSサーバーやクライアント上のローカルグループポリシーエディター(gpedit.msc)(デスクトップ版Windowsをターミナルサーバーとして使用している場合)のいずれかで設定可能です。
RDPセッションタイムアウトの設定は、次のGPOセクションにあります:コンピューターの構成 → ポリシー → 管理用テンプレート → Windowsコンポーネント → リモートデスクトップサービス → リモートデスクトップセッションホスト → セッションの時間制限。利用可能なリモートデスクトップのタイムアウト設定は以下の通りです:
- 切断されたセッションの時間制限を設定する
- アクティブだがアイドル状態のリモートデスクトップサービスセッションの時間制限を設定する — マウスの移動やキーボード入力などのユーザー入力がないアイドル状態のRDPセッションを終了させることができます
- アクティブなリモートデスクトップサービスセッションの時間制限を設定する — アクティブなセッションを含むすべてのRDPセッションの最大時間であり、この時間を過ぎるとセッションは切断されます
- 時間制限に達したときにセッションを終了する — 切断ではなくログオフ(セッション終了)となるまでの時間を設定します
- RemoteAppセッションのログオフの時間制限を設定する
同じRDPタイムアウト設定は、ユーザーGPOセクション(ユーザーの構成 → 管理用テンプレート → Windowsコンポーネント)にもあります。ユーザーセクションのポリシーを使用すると、RDPセッションの長さの制限が異なる複数のユーザーグループを、より柔軟に構成できます。

既定では、これらのオプションは「未構成」になっています。切断されたRDPユーザーセッションを8時間後に自動的に終了させるには、「切断されたセッションの時間制限を設定する」ポリシーを有効にし、ドロップダウンリストから「8時間」を選択します。

変更を保存し、RDホストでグループポリシー設定を更新してください(gpupdate /force)。新しいタイムアウト設定は新規のRDPセッションにのみ適用されるため、既存のRDSセッションは手動で終了させる必要があります。
レジストリでRDPセッションの時間制限を設定する
レジストリからもRDPセッションの時間制限を設定できます。HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Servicesにある以下のDWORDパラメータが、前述のポリシーに対応しています:
- MaxDisconnectionTime
- MaxIdleTime
- MaxConnectionTime
- RemoteAppLogoffTimeLimit
旧バージョンのWindows Serverでのtsconfig.mscによる設定
Windows Server 2008 R2では、専用コンソール tsconfig.msc(RDセッションホスト構成)を使用してRDPセッションのタイムアウトを設定することもできました。コンソールを開き、RDP-Tcpを右クリックして「プロパティ」を選択するだけで、「セッション」タブにセッション制限の設定項目がありました。ただし、新しいWindows Serverのバージョンにはこのコンソールは搭載されていません(なお、tsadmin.mscおよびtsconfig.mscのファイルを手動でコピーすれば、新しいWindows Serverバージョンでもこれらのコンソールを使用することは可能です)。

-
Windows 7/10で標準ユーザーにRDP(リモートデスクトップ)接続を許可する3つの方法
リモートデスクトッププロトコル(RDP)とは、ネットワーク接続を介して別のコンピューターにグラフィカルな画面操作で接続できるようにする技術です。Microsoftが開発した通信規格で、データ通信のための保護されたルールとガイドラインが定められています。権限に応じて、管理者としても標準ユーザーとしても接続が可能です。標準ユーザーにアクセスを許可する理由はさまざまで、たとえば「どこからでもリモートPCで作業できるようにしたい」「家族や友人に特定のプログラムだけを使わせたい(管理者権限は与えたくない)」といったケースが挙げられます。接続が拒否されるエラーについてしかし一部のWindowsユーザーから
-
【解決法】WindowsのイベントID 3104「フィルタープールを生成するためのユーザーセッションの列挙に失敗しました」エラーの対処法
Windowsのエラーログに記録される「フィルタープールを生成するためのユーザーセッションの列挙に失敗しました(Enumerating user sessions to generate filter pools failed)」というエラーは、イベントID 3104として表示される不具合です。このエラーは、Cortanaとは独立したWindowsの検索メカニズムに関連しています。このエラーは主に新規インストールしたWindows 10で発生し、Windowsが検索機能を正しく初期化できていないことを意味します。場合によってはシステムの再起動を引き起こしたり、検索機能が正常に動作しなくなったり