Сценарий использования поставщика учетных данных: CPUS_UNLOCK_WORKSTATION удалено из Windows 10

Я разрабатываю пользовательский поставщик учетных данных и мне нужно знать во время выполнения, является ли сценарий входом в систему или разблокировкой сеанса. Для этого я проверяю CREDENTIAL_PROVIDER_USAGE_SCENARIO вернулся SetUsageScenario интерфейса ICredentialProvider.

В Windows 10 независимо от того, нахожусь ли я при входе в систему или когда сеанс заблокирован, я всегда получаю CPUS_LOGON в качестве сценария использования, в то время как в предыдущей версии Windows CPUS_UNLOCK_WORKSTATION возвращался, когда сеанс был заблокирован, и CPUS_LOGON при входе в систему.

Таким образом, похоже, что в Windows 10 произошли изменения, о которых не сообщается в MSDN.

Есть ли другой способ определить, заблокирован ли сценарий использования сеанса?

4

Решение

В настоящее время я изучаю ту же проблему и могу обойти ее, пока Microsoft не сможет обновить документацию.

Хотя я все еще получаю CPUS_LOGON, мы все еще в том же сеансе, что и заблокированный пользователь. Используя функцию WTSQuerySessionInformationW, Вы можете проверить, что в данный момент пользователь вошел в текущий сеанс. Оттуда вы можете продолжить, как если бы вы были в сценарии использования CPUS_UNLOCK_WORKSTATION.

ОБНОВЛЕНИЕ (18.01.2016): Похоже, Microsoft наконец-то обновила свою документацию по этому вопросу. Смотрите выдержку ниже из CREDENTIAL_PROVIDER_USAGE_SCENARIO документация:

Начиная с Windows 10, CPUS_LOGON а также CPUS_UNLOCK_WORKSTATION
Пользовательские сценарии были объединены. Это позволяет системе поддерживать
вход в систему нескольких пользователей без создания и переключения
сеансы излишне. Любой пользователь на машине может войти в нее один раз
он был заблокирован без необходимости выходить из текущего сеанса
и создать новый. Из-за этого, CPUS_LOGON можно использовать как для
вход в систему или когда рабочая станция разблокирована. Тем не мение,
CPUS_LOGON не может быть использован во всех случаях. Из-за ограничений политики
накладывается различными системами, иногда это необходимо для пользователя
сценарий будет CPUS_UNLOCK_WORKSTATION, Ваш провайдер учетных данных
должен быть достаточно надежным, чтобы создать соответствующую структуру учетных данных
на основе сценария, данного ему. Windows запросит
соответствующий сценарий пользователя в зависимости от ситуации. Некоторые из факторов
это влияние или нет CPUS_UNLOCK_WORKSTATION сценарий должен быть
б включает в себя следующее. Обратите внимание, что это только подмножество
возможности.

  • Операционная система устройства.
  • Будь то консольный или удаленный сеанс.
  • Групповые политики, такие как скрытие точек входа для быстрого переключения пользователей или интерактивный вход в систему, который не отображает фамилию пользователя.

Поставщики учетных данных, которые должны перечислить
в настоящее время пользователь вошел в систему, поскольку плитка по умолчанию может сохранять
отслеживать текущего пользователя или использовать API-интерфейсы, такие как
WTSQuerySessionInformation чтобы получить эту информацию

5

Другие решения

Вы можете попробовать SENS (Служба уведомлений о системных событиях). Это предоставляемый Microsoft сервис уведомлений.

https://msdn.microsoft.com/en-us/library/windows/desktop/cc185680(v=vs.85).aspx

Он имеет различные события для входа / выхода из системы и блокировки / разблокировки экрана уведомлений. Он использует интерфейс COM +. Я не знаком с требованиями провайдеров учетных данных, поэтому не знаю, будет ли служба работать в том контексте, в котором вы нуждаетесь, или время встречи будет соответствовать вашим потребностям, но это то, что вы могли бы исследовать.

0

По вопросам рекламы [email protected]