Проблема масштабирования RDP в Windows 10 на мониторах с высоким разрешением

Проблема масштабирования RDP в Windows 10 на мониторах с высоким разрешением

При использовании мониторов с высоким разрешением (4k DPI) в Windows 10 пользователи часто сталкиваются с тем, что текст, значки и другие элементы устаревших программ, несовместимых с экранными режимами HiDPI, становится слишком мелким, размытыми и нечитаемыми.

Частично эта проблема была исправлена в обновлении Fall Creators Update за счет внедрения дополнительной поддержки динамического масштабирования DPI, однако при подключении к рабочему столу удаленного компьютера по RDP, проблема масштабирования все еще сохраняется (все также отсутствует поддержка нормального масштабирование для клиента mstsc.exe).

В Windows 8.1 и Windows 10 по-умолчанию локальный DPI передается в RDP подключение, в результате все значки и текст в таком окне становятся очень мелкими и плохо читаемыми.

win10 rdp 4k resolution

В качестве обходного пути можно использовать для RDP подключений приложение RDCMan, но есть решение и для родного клиента mstsc.exe.

Смысл в том, что для конкретных приложений можно создать отдельный файл манифеста (.manifest).

Чтобы этот функционал заработал, чтобы Windows при запуске приложения пыталась сначала получить данный из файла манифеста приложения. Для этого в ветке реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide создать ключ типа DWORD (32 бит) со именем PreferExternalManifest и десятичным значением 1.

PreferExternalManifest

Затем в каталоге %SystemRoot%\System32\ (в нем хранится клиент mstsc.exe) нужно создать файл mstsc.exe.manifest со следующим текстом:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="amd64"
publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings= "http://schemas.microsoft.com/SMI/2005/WindowsSettings" >false</ms_windowsSettings:dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

mstsc.exe.manifest

Примечание. Данные значения для файла манифеста можно получить самостоятельно из .exe файла приложения с помощью утилиты Resource Hacker. Для этого нужно открыть файл mstsc.exe с помощью Resource Hacker. Скопируйте данные из раздела Manifest->1->1033 (для английской Windows) и добавьте секцию с флагом dpiAware со значением false.

Перезагрузите Windows, и попробуйте удаленно подключиться к другому компьютеру/серверу с помощью mstsc.exe. Как вы видите, содержимое RDP окна теперь отображается нормально.

Аналогичным образом можно создать файл манифеста для любого приложения, который не поддерживает нативное масштабирование.

Не забудьте почистить кэш, но или удалить, создать пользователя.

Отсюда

Проблема с RemoteApp — потеря фокуса

Нашел два решения:

1.

redirectclipboard:i:1
redirectposdevices:i:0
redirectprinters:i:0
redirectcomports:i:1
redirectsmartcards:i:1
devicestoredirect:s:*
drivestoredirect:s:*
redirectdrives:i:1
session bpp:i:16
prompt for credentials on client:i:1
span monitors:i:0
use multimon:i:0
remoteapplicationmode:i:1
server port:i:3389
allow font smoothing:i:0
promptcredentialonce:i:1
authentication level:i:2
full address:s:192.168.0.200
remoteapplicationprogram:s:||1cfull
remoteapplicationname:s:1cfull
remoteapplicationcmdline:s:
alternate full address:s:SERVERNAME
disableremoteappcapscheck:i:1
alternate shell:s:rdpinit.exe
screen mode id:i:2
winposstr:s:0,3,0,0,800,600
compression:i:0
keyboardhook:i:2
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:2
disable wallpaper:i:1
allow desktop composition:i:1
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:1
disable cursor setting:i:1
bitmapcachepersistenable:i:0
audiomode:i:0
redirectdirectx:i:0
autoreconnection enabled:i:1
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationicon:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
use redirection server name:i:0
networkautodetect:i:1
bandwidthautodetect:i:1
displayconnectionbar:i:1
enableworkspacereconnect:i:0
gatewaybrokeringtype:i:0
rdgiskdcproxy:i:0
kdcproxyname:s:

2.
1. Использовать RDP client 7 версии
2. установка hkcu\control panel\desktop\forgroundlocktimeout в 0
3. (возможно хуже не будет) установка указанных выше патчей и на сервер и на клиентов.

и есть способы отобразить все же пропавшие окна
1 способ Alt+tab — не всегда помогает
2 способ Ctrl+alt+esc — не всегда помогает
3 способ ctrl+alt+end и нажать отмена — помогает.

Посмотрю сегодня, что работает.

 

====================================

Помогает поднятие версии RDP до 8.1

https://www.microsoft.com/ru-RU/download/details.aspx?id=41036

Если пройти по ссылке выше, то ссылки на обновление не работают, поэтому  ставим обновления:

KB2574819KB2830477KB2857650KB2913751

https://www.microsoft.com/ru-RU/download/details.aspx?id=40986 -x64

Указанный порт не существует пр установке принтера HP 125

Устанавливаю принтер HP125 по сети. Принтер расшарен на машине с Windows7. Имя компьютера на котором принтер допустим Петров. При установке на другой машине с Windows 8 ругается что порт не найден. Решение в переименовании компьютера в имя на английском. Всплыла другая проблема, при первой(!!!!) печати ругается страница напечатана неправильно. Решение: распечатать одну страницу на расшаренном компьютере. (-‸ლ)

 

подключение принтера через порт LPR

На машине с принтером в Установке и удалении программ – Компоненты Windows выбираем Other Network File and Print Services (Другие службы доступа к файлам и принтерам сети). Windows подымет демона LPD, который слушает на 515 порту для всех принтеров, которые есть на машине. Принтеры даже не требуется расшаривать.

Пусть эта машина называется WORKER с ip адресом 10.131.2.2, его полное имя в домене WORKER.MYDOMAIN.LOCAL, принтер в окне принтеров имеет имя HP LASERJET 6L

На машине-клиенте аналогично подымаем эту службу в Установке и удалении программ. Затем добавляем принтер, указываем, что он Локальный и выбираем Создать порт, тип порта — LPR порт, далее будет окно, в котором указываем полное FQDN имя хоста с LPD сервером или его IP-адрес (то есть или 10.131.2.2 или WORKER.MYDOMAIN.LOCAL) и полное имя принтера (то есть пишем HP LASERJET 6L).

Отключение Caps Lock в Windows

Проблему случайного включения режима Caps Lock путём задевания одноимённой клавиши можно решить встроенными средствами Windows.

Windows XP:
  1. Пуск
  2. Панель управления
  3. Язык и региональные стандарты
  4. Языки
  5. Языки и службы текстового ввода
  6. Подробнее
  7. Настройка
  8. Параметры клавиатуры
  9. Отключение режима Caps Lock
  10. Клавишей SHIFT.
Windows 7:
  1. Пуск
  2. Панель управления
  3. Часы, язык и регион
  4. Смена раскладки клавиатуры или других способов ввода
  5. Языки и клавиатуры
  6. Клавиатуры и другие языки ввода
  7. Изменить клавиатуру
  8. Переключение клавиатуры
  9. Отключение режима Caps Lock
  10. Клавишей SHIFT.
Windows 10
  1. Пуск (щелчок правой кнопкой мыши)
  2. Панель управления
  3. Часы, язык и регион
  4. Язык
  5. Дополнительные параметры
  6. Переключение методов ввода
  7. Изменить сочетания клавиш языковой панели
  8. Переключение клавиатуры
  9. Отключение режима CAPS LOCK
  10. Клавишей SHIFT.
Windows 10 (альтернативный вариант)
  1. Пуск
  2. Параметры
  3. Время и язык
  4. Регион и язык
  5. Сопутствующие параметры
  6. Дополнительные параметры даты и времени, региональные параметры
  7. Язык
  8. Дополнительные параметры
  9. Переключение методов ввода
  10. Изменить сочетания клавиш языковой панели
  11. Переключение клавиатуры
  12. Отключение режима CAPS LOCK
  13. Клавишей SHIFT.

В результате, в отличие от использующегося по умолчанию переключения режима Caps Lock (включён/выключен), становится возможным удобное и гарантированное его выключение простым нажатием клавиши Shift вне зависимостиот текущего состояния Caps Lock.

Сброс настроек протокола TCP/IP в Windows 7/Windows 2008

Достаточно часто в случае поражения вашего компьютера вирусами или другими системными сбоями, могут наблюдаться непонятные проблемы с сетевыми приложениями, начиная с того, что могут просто не отображаться Web-станицы и заканчивая невозможностью подключиться к сети. Поэтому в таких случаях бывает целесообразно выполнить полный сброс параметров протокола TCP/IP в Windows 7 или Windows 2008, в результате можно вернуть все сетевые настройки и состояние библиотеки WinSock в первоначальные «чистые» настройки, т.е. фактически это переустановка TCP/IP. Сбросить настройки TCP/IP можно следующим образом:

  • Запустите командную строку cmd с правами администратора («Run As Administrator»)
  • Затем последовательно выполните следующие команды:

ipconfig /flushdns

nbtstat -R

nbtstat -RR

netsh int reset all

[на win7 ругается, поэтому используем след команду:

netsh int ip reset c:\resetlog.txt
При этом журнал сброса сохранится в корне диска C:\ если опустить приставку c:\ то журнал будет сохранен в текущем каталоге. После этого следует перезагрузить компьютер.
После использования этой команды в реестре сбросятся к «заводским» следующие ветки регистра:
SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
SYSTEM\CurrentControlSet\Services\DHCP\Parameters\]

netsh int ip reset

netsh winsock reset

Затем выполните следующую команду:

netsh interface tcp set global autotuninglevel=disabled
  • Перезагрузите компьютер

you don’t have administrator rights freesshd

  1. Download http://www.ollydbg.de/
  2. Open freeSSHDService.exe in OllyDbg
  3. Press Alt+E and select the FreeSSHDService.exe module (first one on the list)
  4. Right click in the box and click Search for -> All referenced text strings.
    a. A new window will open
  5. In the new window, in the new window right click and select Search for text, enter «Tray icon shown (admin logged in)».
  6. Note the address here, in 1.3.1 it’s 002E3349
  7. Go back to your main window and press CTRL+G, enter this address.
  8. Scroll up 4 lines, the address in 1.3.1 is 002E333E, it should read 74 56
  9. Right click on this address and select Binary -> Edit
  10. Change the HEX +00 field (bottom box) to 90 90, click ok
  11. Right click on the modified addresses, select Copy to executable -> Selection
  12. Right click in the resulting window and select Save File
  13. Overright the existing FreeSSHDService.exe

You should now be able to launch the app.

Если кому-то непонятно, сообщите — переведу.

Wanna Cry

В семерке:

1. Команда выполняется в PowerShell с правами администратора (не в cmd.exe)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force

2. Или следующие две команды, которые можно выполнять и в cmd.exe (тоже с правами администратора):
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled

Есть еще вариант заблокировать соединения на портах 445 и 135 в firewall, но на этих портах работают многие службы Windows, так что их блокировка может доставить неудобства, имейте ввиду.