Назад | Перейти на главную страницу

Странные проблемы с рендерингом изображений в Windows Server 2016. RDP меняет рендеринг шрифтов? Как сбросить подсистему рендеринга?

У меня странная проблема с нашей системой автоматического тестирования. Это виртуальная машина Windows Server 2016, на которой выполняются различные автоматизированные функциональные тесты нашего бизнес-приложения. В некоторых тестах мы создаем файлы изображений (.png), которые представляют диаграммы и тому подобное. Изображения создаются с помощью кода, ориентированного на Win32 GDI API. Эти файлы изображений двоичны по сравнению с существующими файлами, которые хранятся в тестовой системе, чтобы увидеть, есть ли у нас какие-либо функциональные регрессии. И когда они не совпадают, соответствующие тесты становятся красными.

Для информации, если это может быть актуально, сами тесты запускаются через запланированную задачу TFS (MS Team Foundation Server), и на машине, которая выполняет эти тесты, работает служба агента TFS.

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

Я отследил эти изменения в способе отображения шрифта на диаграммах. (Извините, я не могу публиковать примеры из-за деловой конфиденциальности.) Но различия кажутся тонкими различиями в способах сглаживания символов для смешивания с фоном. Я провел несколько экспериментов и, например, обнаружил, что настройки Windows ClearType будут влиять на результат, но я не знаю, какова точная причина в моем конкретном случае.

Но в любом случае, я ожидаю, что результаты будут одинаковыми при каждом запуске теста, пока никто не меняет эти настройки.

Теперь проблема в том, что разные люди будут подключаться к этой машине через Windows RDP (удаленный рабочий стол - используя ту же учетную запись, что и агент TFS!) В течение дня. (Тесты проводятся ночью)

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

Итак, мой вопрос:

Могу ли я каким-то образом заставить Windows (в идеале программно) сбросить подсистему рендеринга Windows до значений по умолчанию, которые будут давать одинаковый результат при рендеринге изображения каждый раз?

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