How to stop Remote Desktop from closing my session due to inactivity?

Solution 1:

Using Group Policies (best practice) Open Group Policy.

In Computer Configuration, Administrative Templates, Windows Components, Terminal Services, Sessions, enable the settings you want to configure. See the policy explain text for more information.

Or

Using Terminal Services Configuration Open Terminal Services Configuration.

In the console tree, click Connections.

In the details pane, right-click the connection for which you want to modify time-out settings, and then click Properties.

On the Sessions tab, above End a disconnected session, select the Override user settings check box. This allows you to configure time-out settings for the connection.

Configure the following time-out settings as appropriate:

In End a disconnected session, select the maximum amount of time that a disconnected session remains on the server. When the time limit is reached, the disconnected session ends. When a session ends, it is permanently deleted from the server. Select Never to allow disconnected sessions to remain on the server indefinitely.

In Active session limit, select the maximum amount of time that a user's session can remain active on the server. When the time limit is reached, either the user is disconnected from the session or the session ends. When a session ends, it is permanently deleted from the server. Select Never to allow the session to continue indefinitely.

In Idle session limit, select the maximum amount of time that an idle session (a session without client activity) remains on the server. When the time limit is reached, either the user is disconnected from the session or the session ends. When a session ends, it is permanently deleted from the server. Select Never to allow idle sessions to remain on the server indefinitely.

Source

Solution 2:

I ran into the same problem, but was unable to access the Group Policy or Registry, due to restricted privileges.

However, I found another solution which uses Windows Script Host to run a piece of JScript which will toggle Scroll Lock every five minutes, for one hour.

Here's the script. Just save it with a .js extension, and run it with "Microsoft Windows Based Script Host".

var WshShell = WScript.CreateObject("WScript.Shell");
for (var i = 0; i < 12; i++) { // Loop 12 times
    WshShell.SendKeys('{SCROLLLOCK}');
    WshShell.SendKeys('{SCROLLLOCK}'); // Toggle Scroll Lock
    WScript.Sleep(300000); // Wait 5 minutes
}

If you want to change the key being pressed, check out this link, and swap out the SendKeys parameter for another character.


The same solution, in PowerShell:

[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")
$allowCloseAfter = (Get-Date).ToUniversalTime().AddHours(24)
while ($allowCloseAfter -gt (Get-Date).ToUniversalTime()) {
    [System.Windows.Forms.SendKeys]::SendWait("{SCROLLLOCK}")
    [System.Windows.Forms.SendKeys]::SendWait("{SCROLLLOCK}")
    Write-Host '.' -NoNewline
    Start-Sleep -Seconds 300
}

Solution 3:

For Windows 7/Windows 10/Windows Server 2012 and above:

  • Press Windows+R and type gpedit.msc
  • Navigate the tree view on the left to Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Session Time Limits
  • Adjust the four settings as desired (I believe you want to adjust Set time limit for disconnected sessions and Terminate session when time limits are reached)