как разблокировать или войти в Windows с помощью самого приложения

Как мы все знаем, мы можем использовать такой api, как «LockWorkStation ()» в «user32.dll», для блокировки окон. А как его разлочить?

Например, если я сначала запускаю приложение, я хочу, чтобы оно само разблокировало окна через 30 секунд. Как это сделать? Другими словами, при автоматическом входе в систему Windows считывает имя пользователя и пароль из regedit, а затем использует API для входа в систему. Теперь мне нужен api. Он должен существовать, но, похоже, не станет достоянием общественности.

Я могу получить в приложении имя пользователя и пароль окна.

Вроде бы какой-то Api в WBF есть, но знаете, ресурса тоже меньше. Я не хочу отправлять сообщения с клавиатуры, чтобы решить проблему, потому что это худший метод.


person Edwin Tai    schedule 29.08.2009    source источник


Ответы (2)


Продвигая мой комментарий, потому что он требует дополнительных объяснений:

Вы действительно хотите написать GINA (для XP) или Поставщик учетных данных для Windows Vista и более поздних версий.

По сути, модель проверки подлинности Windows основана на предоставлении пользователем свидетельства (идентификации) того, что он авторизован для доступа к компьютеру (либо своими учетными данными, либо биометрическими данными, либо смарт-картой, либо другой информацией). После того, как вы авторизуетесь для входа на компьютер, Windows разрешит вам доступ.

Когда рабочая станция заблокирована (по какой-либо причине - экранная заставка, пользователь вводит Win-L), пользователь должен пройти повторную аутентификацию.

Обычно этого достаточно - авторизация действует в течение определенного периода времени (определяется администратором). Если (по соображениям политики) вам нужна более детальная модель управления, вы можете использовать идею «LockWorkstation», чтобы заставить пользователя повторно аутентифицироваться. Вам нужно ОЧЕНЬ осторожно относиться к ложным срабатываниям (ничто не бесит пользователей больше, чем то, что им не разрешено использовать свой компьютер просто потому, что они сняли очки или по-другому причесались) и к тому, насколько сильно истощает системные ресурсы ваше приложение.

person ReinstateMonica Larry Osterman    schedule 29.08.2009

Когда рабочая станция заблокирована, единственный способ разблокировать ее - войти в систему (нажав Alt + Ctrl + Del и введя правильный пароль) . Это функция безопасности, которую нельзя обойти с помощью API приложения.

person Martin Liversage    schedule 29.08.2009
comment
Но вы знаете, что при автоматическом входе окна будут читать имя пользователя и пароль из regedit, а затем использовать api для входа в окна с их помощью. Теперь мне нужен api. Он должен существовать, но, похоже, не публикуется. - person Edwin Tai; 29.08.2009
comment
Функция автоматического входа отличается от разблокировки. С помощью AutoLogin ваше имя пользователя и пароль хранятся в реестре. Разлочки нет. Возможно, лучший подход к этому вопросу - описать то, что вы пытаетесь сделать. Возможно, вы сможете сделать это, не разблокируя их систему. - person Rob Haupt; 29.08.2009
comment
Пишу код для распознавания лиц. В случае нераспознания система будет заблокирована, в противном случае будет разблокирована. я знаю имя пользователя и пароль. Но я хочу, чтобы приложение само разблокировало систему с указанными мной параметрами имени пользователя и пароля. - person Edwin Tai; 29.08.2009
comment
Похоже, вам нужно написать GINA (en.wikipedia.org/wiki/) DLL . - person ReinstateMonica Larry Osterman; 29.08.2009