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

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

Запись от _lunar_ размещена 08.02.2023 в 12:40
Показов 7331 Комментарии 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
Просмотров: 354
Размер:	34.7 Кб
ID:	7909
Если будет использоваться драйвер FireDaemon ZeroInput в Windows 11 22H2 вы получите цикличный BSOD.
Поэтому не применяйте и не развертывайте этот драйвер в Windows 11 22H2!!!

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

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

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

Но вернёмся к моему новому проекту. На данный момент я спокойно осуществляю переход в терминальную сессию, создаю там процессы и они отображаются и работают вполне корректно.
Но есть проблема с выходом обратно в пользовательскую сессию. Т.к. драйвер клавиатуры и мыши не работает, приходится просто смотреть на выполнение программ, которые я тестирую и делать жесткий ресет компа.
Метки c, c++, winapi
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru