Как предотвратить закрытие сеанса удаленного рабочего стола из-за бездействия?

Вопрос или проблема

Я подключаюсь с рабочего стола Windows Vista к серверу, работающему на Windows Server 2003. Я использую удаленный рабочий стол и запускаю некоторые очень длительные процессы на удаленном сервере. Моя проблема в том, что удаленный рабочий стол завершает мой сеанс и прекращает выполнение всех активных процессов через некоторое время без моего участия. Это значит, что мне нужно сидеть за ПК и периодически двигать мышью, вместо того чтобы выйти на улицу и наслаждаться отличной погодой несколько часов.

Знает ли кто-нибудь, как отключить это поведение? Я предполагаю, что это где-то настраивается.

Используя групповые политики (лучший способ)
Откройте редактор групповой политики.

В Конфигурация компьютера,
Административные шаблоны, Компоненты
Windows, Службы удалённых рабочих
столов, Сеансы, включите нужные
настройки для конфигурации. Смотрите
текст объяснения политики для
получения дополнительной
информации.

Или

Используя конфигурацию служб удаленного
рабочего стола
Откройте Конфигурацию служб удаленного
рабочего стола.

В дереве консоли кликните
на Подключения.

В области сведений щелкните
правой кнопкой мыши на соединение,
для которого вы хотите изменить
параметры времени ожидания, затем
нажмите Свойства.

На вкладке Сеансы, выше Завершение
отключенного сеанса, отметьте галочкой
Переопределить параметры пользователей.
Это позволит вам настроить параметры
времени ожидания для соединения.

Настройте следующие параметры
времени ожидания по необходимости:

В Завершение отключенного сеанса выберите
максимальное время, в течение которого
отключенный сеанс будет оставаться на
сервере. Когда время истекает, отключенный
сеанс заканчивается. Когда сеанс заканчивается,
он навсегда удаляется с сервера.
Выберите Никогда, чтобы отключенные сеансы
оставались на сервере бесконечно.

В пределах активного сеанса выберите
максимальное время, в течение которого
сеанс пользователя может оставаться
активным на сервере. Когда время истекает,
пользователь будет либо отключен от
сеанса, либо сеанс будет завершен.
Когда сеанс заканчивается, он навсегда
удаляется с сервера. Выберите Никогда,
чтобы сеанс продолжался бесконечно.

В пределах бездействующего сеанса выберите
максимальное время, в течение которого
бездействующий сеанс (сеанс без активности
клиента) остается на сервере. Когда время
истекает, пользователь будет либо
отключен от сеанса, либо сеанс будет
завершен. Когда сеанс заканчивается, он
навсегда удаляется с сервера.
Выберите Никогда, чтобы бездействующие
сеансы оставались на сервере бесконечно.

Источник

Я столкнулся с той же проблемой, но не смог получить доступ к Групповым политикам или Реестру из-за ограниченных привилегий.

Однако, я нашел другое решение, которое использует Windows Script Host для запуска скрипта JScript, который будет переключать Scroll Lock каждые пять минут в течение часа.

Вот скрипт. Просто сохраните его с расширением .js и запустите с “Microsoft Windows Based Script Host”.

    var WshShell = WScript.CreateObject("WScript.Shell");
    for (var i = 0; i < 12; i++) { // Цикл 12 раз
        WshShell.SendKeys('{SCROLLLOCK}');
        WshShell.SendKeys('{SCROLLLOCK}'); // Переключаем Scroll Lock
        WScript.Sleep(300000); // Ждем 5 минут
    }

Если вы хотите изменить клавишу, которую нажимаете, посмотрите эту ссылку и замените параметр SendKeys на другой символ.


То же решение на 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
}

Для Windows 7/Windows 10/Windows Server 2012 и выше:

  • Нажмите Windows+R и введите gpedit.msc
  • Перейдите в дереве на слева к Конфигурация компьютера/Административные шаблоны/Компоненты Windows/Службы удалённого рабочего стола/Хост сеансов удаленного рабочего стола/Лимиты сеансов
  • Настройте четыре параметра по своему усмотрению (я полагаю, что вам нужно подкорректировать Установить лимит времени для отключённых сеансов и Завершать сеанс по истечении лимитов времени)

.

Ответ или решение

Отключение удаленного рабочего стола от завершения сеанса по истечении определенного времени бездействия представляет собой распространенную задачу, особенно при выполнении длительных процессов на удаленном сервере. Рассмотрим, как можно настроить сеанс удаленного рабочего стола так, чтобы он оставался активным на сервере Windows Server 2003, подключаясь к нему с компьютера под управлением Windows Vista.

Теоретическая часть

Сеансы удаленного рабочего стола могут быть настроены для завершения по истечении определенного времени бездействия, дисконнекта или даже просто активного использования. Такая политика безопасности обычно устанавливается для оптимизации ресурсов и обеспечения безопасности серверов. Задача состоит в том, чтобы настроить параметры сессии так, чтобы ваши длительные процессы не прерывались. Инструменты, такие как групповая политика или конфигурация служб терминалов на сервере, обычно позволяют настроить эти параметры.

Пример

  1. Настройка групповой политики:

    • Откройте редактор групповой политики, используя gpedit.msc.
    • Перейдите в раздел Computer Configuration -> Administrative Templates -> Windows Components -> Terminal Services -> Sessions.
    • Настройте нужные параметры, такие как "Установить ограничение времени для отключенных сессий" и "Завершить сеанс при выполнении временных ограничений". Обратите внимание на объяснение политик, чтобы понять, как каждая настройка повлияет на сессии.
  2. Конфигурация через терминальные службы:

    • Откройте Конфигурацию служб терминалов и выберите "Подключения".
    • Нажмите правой кнопкой мыши на подключение, которое хотите изменить, и выберите "Свойства".
    • Перейдите на вкладку "Сессии" и отметьте "Переопределить пользовательские настройки".
    • Установите параметры для "Закончить отключённую сессию", "Лимит активной сессии" и "Лимит неактивной сессии" в положение "Никогда", чтобы сеансы оставались активными.

Применение

Если вам нет доступа к конфигурации групповых политик или служб терминалов, можно использовать скрипты, которые симулируют активность. Пример на JScript:

var WshShell = WScript.CreateObject("WScript.Shell");
for (var i = 0; i < 12; i++) {
    WshShell.SendKeys('{SCROLLLOCK}');
    WshShell.SendKeys('{SCROLLLOCK}');
    WScript.Sleep(300000);
}

Этот скрипт будет переключать состояние клавиши Scroll Lock каждые пять минут в течение одного часа, чтобы обмануть систему, что пользователь активен.

Альтернативный скрипт на 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
}

Этот скрипт также поддерживает активность, отправляя клавишу Scroll Lock каждые пять минут в течение 24 часов. Это простое, но эффективное решение, если изменить конфигурацию невозможно.

Контекст и заключение

При работе с устаревшими системами, такими как Windows Server 2003 и Windows Vista, возможности для настройки могут быть ограничены корпоративной политикой или отсутствием административного доступа. Использование групповых политик и конфигурации терминальных служб – это лучшее решение, если у вас есть соответствующие права доступа. Если же подобные ограничения имеют место, то скрипты, которые симулируют активность, могут стать временной мерой для поддержания активности вашего сеанса без постоянного присутствия пользователя на месте. В любом случае, важно убедиться, что любая конфигурация соответствует политике безопасности компании и законодательным ограничениям.

Оцените материал
Добавить комментарий

Капча загружается...