Форум программистов, компьютерный форум, киберфорум
_lunar_
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Доступ к терминальной сессии (Session 0) после обновления 22H2

Запись от _lunar_ размещена 08.02.2023 в 12:40
Показов 7731 Комментарии 0
Метки c, c++, winapi

Дополнительная информация и аттач для скачивания тут

Давно я ничего не писал в блоге, да и ценности в жизни меняются - занимаюсь кодингом всё меньше и меньше, но окончательно бросить всё же не могу (после стольких лет моего увлечения программированием).
А сподвигло меня на новый анализ ядра ОС не так давно выпущенное обновление Windows версии 22H2 (для 10 и 11 версий ОС).

В своём проекте Kernel Explorer я занимался организацией бесплатного доступа к терминальной сессии - и мне это удалось.
Я спроектировал сервис UI0Detect (подобный сервису в Windows Vista, 7, 8, 10 до билда 1709, а с 1803 этот сервис был жестко вырезан майкрософтом).
В конечном итоге принял решение о публикации исходного кода проекта Kernel Explorer на сервисе GutHub (принадлежащего MS). Но оставил исходный код службы UI0Detect закрытым и не стал выкладывать сурки в паблик.
Думаю в Microsoft покопались в исходном коде моего проекта и немного прифигели от того, что я спокойно предоставил пользователям доступ туда, куда они его запретили начиная с Windows 10 1803.
Поэтому в версии ядра 22H2 было внесено много чего нового. Эти изменения естественно "неожиданным" образом коснулись и Kernel Explorer и драйвера от ребят из FireDaemon, предоставляющего возможность работать в терминальной сессии мышкой и клавиатурой. Но как ни странно изменения не коснулись сервиса UI0Detect, сурки которого я не выкладывал (совпадение?). Мой сервис UI0Detect как работал, так и работает.
В последствии от FireDaemon было выпущено предупреждение
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 419
Размер:	34.7 Кб
ID:	7909
Если будет использоваться драйвер FireDaemon ZeroInput в Windows 11 22H2 вы получите цикличный BSOD.
Поэтому не применяйте и не развертывайте этот драйвер в Windows 11 22H2!!!

Соответственно и функционал Kernel Explorer, отвечающий за терминальную сессию работал с ошибками.
Вносить изменения мне очень не хотелось про причинам, описанным в самом начале этого блога. Да и развертывать студию я не хотел.
Какое-то время назад я работал в IDE под названием Pelles C - чистый Си, есть отладчик, редактор ресурсов и всё что нужно для написания программы.
Да она кажется устаревшей в плане интерфейса, отсутствия нормальной подсветки синтаксиса и умной подстановки впечатываемых слов, в общем всем тем, к чему привыкли юзеры VS.

Решил немного освежить в памяти работу с этой IDE. И в итоге написал Kernel Explorer второй версии в облегчённом виде
Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 327
Размер:	17.7 Кб
ID:	7910
На данный момент инструмент проходит тестирование, и как только доработаю оставшийся функционал, выложу для паблика.

Но написать программу это одно, а вот чтобы она работала в новой версии Windows это уже другой вопрос.
Пришлось изучить изменения в ядре ОС. И вот что обнаружилось.
Главным изменением в принципе перехода в терминальную сессию стало то, что основным рабочим столом стал Winlogon (заместо рабочего стола Default).
В этом и проблема. В предыдущих блогах я уже упоминал о том, что рабочий стол Winlogon лишен практически всех функций
На данном Рабочем столе Winlogon отключено практически всё:
- не работает механизм переключения между Рабочими столами (SwitchDesktop) ни при каких правах (будь то даже система)
- не работает функционал быстрого скриншота PrintScreen и самого копирования (в буфер обмена не передаются данные, хотя у Рабочего стола Disconnect с этим всё в порядке)
- очень странно себя ведут некоторые оконные программы (здесь стоит сделать акцент на то, что этот стол изначально не предназначался для GUI)
И ещё много всякой мелочи, которая усложняет анализ происходящего.
Иначе говоря, при переходе в Session 0 мы попадаем не на Default, а на Winlogon. С этими же изменениями и связана проблема драйвера FireDaemon ZeroInput.
Запихиваем этот драйвер в дизассемблер и видим вот такую картину
Нажмите на изображение для увеличения
Название: 3.png
Просмотров: 427
Размер:	50.1 Кб
ID:	7911
Драйвер ребят из FireDaemon просто жестко завязан на рабочий стол Default, отсюда и проблемы совместимости с 22H2 и цикличный BSOD.
Позже может быть напишу им в саппорт и объясню как решить проблему.

Но вернёмся к моему новому проекту. На данный момент я спокойно осуществляю переход в терминальную сессию, создаю там процессы и они отображаются и работают вполне корректно.
Но есть проблема с выходом обратно в пользовательскую сессию. Т.к. драйвер клавиатуры и мыши не работает, приходится просто смотреть на выполнение программ, которые я тестирую и делать жесткий ресет компа.
Метки c, c++, winapi
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru