Поставщик учетных данных Windows — уничтожен до получения учетных данных

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

Я начал с примера Windows SDK (security/SampleCredentialProvider) и изменил его, чтобы получить учетные данные от службы SYSTEM, которая действует как сервер через канал.

Проблема заключается в следующем: когда объект провайдера учетных данных (тот, который реализует ICredentialProvider) имеет GetCredentialCount вызван, он еще не получил учетные данные от службы SYSTEM через этот канал, поэтому я возвращаю 0 учетных данных (*pdwCount = 0;).

Я не уверен, если это является причиной проблемы, но объект деструктор называется вскоре после этого. Это, в свою очередь, разрушает канал, в котором я ожидал передачи учетных данных службы SYSTEM, и ничего не работает.

Мой вопрос: почему объект, который реализует ICredentialProvider уничтожены? Как я могу избежать его уничтожения, чтобы иметь поставщика Подождите для учетных данных, переданных через канал, а затем уведомить LogonUI, что у нас есть новые учетные данные?

Я прилагаю некоторые события из окна просмотра событий Windows, касающиеся моего модуля провайдера учетных данных:

- Credential provider object is created
- SetUsageScenario is called, only CPUS_LOGON is supported
- Advise is called, pcpe parameter is saved and AddRef'd
- GetCredentialCount, 0 is returned (no credential received yet)
- UnAdvise is called (this is unexpected, does this mean I can no longer pass credentials? Why is this called?)
- pipe to receive credentials is created
- Credential provider object's destructor is called -> pipe is destroyed and everything terminates

-1

Решение

Нашел проблему: я застрял на экране Ctrl + Alt + Del, и журнал провайдера учетных данных, на который я смотрел, был RDP (я использовал его для входа и устранения проблемы).

0

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

Других решений пока нет …

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