Приведенные выше ответы могут работать, но кажутся излишне сложными. Вы можете просто прочитать переменную среды windows 'sessionname', чтобы обнаружить сеансы RDP. Значение этой переменной среды будет «Консоль» для обычного локального сеанса. Для сеанса RDP он будет содержать фразу «RDP». Достаточно просто проверить это.
public static boolean isRemoteDesktopSession() {
System.getenv("sessionname").contains("RDP");
}
Проверено и подтверждено работа под Windows7 64bit. Одна проблема, с которой я столкнулся при использовании этого метода, заключается в том, что значения переменных среды, считанные из System.getenv (), не изменяются после запуска JVM. Поэтому, если процесс JVM был запущен сеансом консоли, но затем к нему обратился сеанс RDP, дальнейшие вызовы System.getenv ("sessionname") по-прежнему возвращают "Console."