во-первых, я должен сказать, что я знаю, что эта тема не нова, и на StackOverflow есть несколько существующих тем, но я не нашел решения своей проблемы.
Я знаю, что для разблокировки экрана Windows (Win 7 или 8) я должен использовать Credential Provider, поэтому я загружаю
http://www.microsoft.com/en-us/download/details.aspx?id=4057
И пишите мой код на чистом C++. В моем случае MS предоставила «SampleHardwareEventCredentialProvider» идеальное совпадение. Также я прочитал другой поток SO и знаю, что «есть WinLogon и LogonUI. LogonUI отвечает за отображение окна входа в систему и уведомление WinLogon о действиях пользователей. Winlogon реагирует на события от LogonUI и выполняет необходимые действия для входа пользователей, выключить пользователей, заблокировать сеансы и разблокировать сеансы».
Я пытаюсь создать внешнее аппаратное событие, которое разблокирует мой компьютер. В моем случае у меня было событие Bluetooth, которое разблокировало мою Windows.
И моя проблема в том, что данный класс:
class CSampleCredential : public ICredentialProviderCredential
и его реализованный метод:
HRESULT CSampleCredential::Initialize(
CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* rgcpfd,
const FIELD_STATE_PAIR* rgfsp
)
Я не знаю, как код C++ точно может разблокировать экран Windows.
Что меня зацепило? Пробую с методом Initialize, потому что видел похожий пример (но без возможности повторного использования из-за неполноты):
http://blogs.msdn.com/b/securitytools/archive/2009/07/30/how-to-build-custom-logon-ui-s-in-windows-vista.aspx
Итак, я попробовал две вещи: -CSampleCredential::Initialize() -BOOL LogonUser() -with "localhost" "userName" "userPassword"
но оба они не работали для меня. Итак, что такое ключевая точка (codeLine), которая разблокирует синий экран Windows пользователя?