Вначале я должен сказать, что знаю, что эта тема не нова, и в 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
Итак, я попробовал 2 вещи:
-CSampleCredential :: Initialize ()
-BOOL LogonUser () -с «localhost» «userName» «userPassword»
но оба они не работали на меня.
Так что же является ключевой точкой (codeLine), которая разблокирует для пользователя синий экран Windows?
Задача ещё не решена.