Крюк LockWorkStation в Windows 10 - PullRequest
       32

Крюк LockWorkStation в Windows 10

0 голосов
/ 08 января 2020

Моему приложению C ++ / C# необходимо выполнить определенные действия непосредственно перед блокировкой рабочей станции Windows (пользователь нажимает «Блокировать» в меню «Пуск», нажимает «Win + L» или нажимает «Ctrl + Alt +»). Del »и затем нажимает« Lock »и т. Д. c.) Используя Detours, я подключил user32.dll LockWorkStation API, однако это работает, только если я вызываю« rundll32.exe user32.dll, LockWorkStation »напрямую, а это не так работать в любом другом сценарии. Мне интересно, почему, и я подозреваю, что Windows внутренне вызывает свою собственную процедуру NtUserLockWorkStation вместо LockWorkStation.

Я вижу в Process Explorer, что моя DLL загружается в каждый отдельный процесс, я вижу в DbgView, что ловушка работает для rundll32.exe, но больше нигде. Windows находится в тестовом режиме, принудительное использование подписанного драйвера отключено.

Как мне решить эту проблему? Есть ли другой способ реализовать это? Я пытался использовать WM_WTSSESSION_CHANGE, но получил статус WTS_SESSION_LOCK после того, как рабочая станция уже заблокирована ...

...