Имитация ввода на экране входа в Windows с помощью драйвера
Я пишу инструмент удаленного рабочего стола с открытым исходным кодом, похожий на VNC и TeamViewer. Я заметил, что TeamViewer продолжает снимать экран на экране «Переключение пользователей» или «Блокировка рабочей станции» - и позволяет удаленному пользователю вводить пароль и разблокировать рабочую станцию. Я хочу сделать то же самое.
Я прочел:
Обновлено: Взаимодействие с пользователем на экране входа в Windows
https://stackoverflow.com/questions/9485530/capturing-image-during-windows-logon-invalid-password
Добавление командной кнопки на экран входа в Windows
подключить горячую клавишу на экране входа в Windows
Драйвер для симуляции нажатия клавиш
Удаление экрана входа в Windows через сервис
Как поймать ключ на экране входа в Windows 7?
Отображение окна на экране входа в систему с помощью C # в Windows XP
Из этих сообщений я понял, что имитация ввода в изолированном сеансе определенно не является простым вызовом SendInput (). Но возможно ли использовать драйвер (я считаю, что это именно драйвер фильтра клавиатуры, но я не уверен)? Если это так, я думаю о написании в C # службы (так, чтобы она работала вне сеанса пользователя), которая взаимодействует с драйвером перехвата для имитации нажатий клавиш.
В ответ на вопрос: «Почему бы вам просто не попробовать?», Пока еще нет оболочки для .NET для Interception, чтобы я мог протестировать такой сервис, и поэтому, если общее мнение пришло к выводу, что это невозможно, я не хочу тратить время на написание этой .NET-оболочки.
я нашелдрайвер клавиатуры под названием Interception (который будет выпущен с открытым исходным кодом в будущем), Вы можете напрямуюнайти источник здесь (источником является только оболочка API связи C, окружающая фактический драйвер ядра).
Другой вопрос, который у меня есть ... Я запутался в том, какие файлы составляют драйвер. Его библиотека DLL перехвата, запрограммированная в C, компилируется в .DLL. Но не являются ли драйверы некоторых расширений .sys - как бы вы скомпилировали эту библиотеку Interception DLL в реальный драйвер - и как бы вы ее установили?
РЕДАКТИРОВАТЬ: Оболочка .NET существует, Когда я нажал клавишу «x», я изменил пример приложения консоли, чтобы ввести весь свой пароль, и он успешно работал - не только на заблокированном экране рабочей станции, но и на экране входа в Windows. Так что это работает.
Редактировать: Библиотека оболочки C # для этого драйвера клавиатуры находится здесь.