Как создать образцы поставщика учетных данных Windows 7 с помощью Visual Studio 2012?

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

Однако я столкнулся с небольшой проблемой. Я хотел бы использовать Visual Studio 2012 для разработки. Образцы были созданы с использованием Visual Studio 2008. Мне удалось успешно создать и использовать поставщики примеров при использовании Visual Studio 2008. Однако, когда я пытаюсь импортировать проект в Visual Studio 2012, он просто скомпилируется, но это не так. не работает, когда я пытаюсь его использовать.

Я был в состоянии проверить с помощью WinDbg, что поставщик учетных данных загружается, когда на экране блокировки / входа в систему, но ничего не отображается. К сожалению, я не знаю больше о WinDbg, чтобы можно было отследить проблему с помощью этого инструмента.

Я видел предложение, появившееся в другом месте при исследовании проблемы, касающейся проблем, возникающих при компиляции поставщика учетных данных для 64-разрядной машины с использованием платформы win32. Я использую 64-битную машину и убедился, что я компилирую на платформе x64 в обеих версиях Visual Studio.

Также стоит отметить, что после преобразования VS2008 в VS2012, которое, казалось, происходило без проблем, мне пришлось изменить параметр «Библиотека времени выполнения» с «Многопоточная DLL (/ MD)» на «Многопоточный (/ MT) ». Это была оригинальная настройка в проекте VS2008. Можно было заставить провайдера учетных данных «работать» (то есть не выдавать ошибку об отсутствующей зависимости DLL) без внесения этого изменения, но мне сначала пришлось установить распространяемый Visual C ++ для Visual Studio 2012. Внесение этого изменения удаляет эту зависимость.

Любые предложения о том, как я могу решить эту проблему и успешно скомпилировать образцы провайдера учетных данных в VS2012?

ОБНОВИТЬ

После установки VS2008 и VS2012 на одном компьютере мне удалось изменить свойство «Набор инструментов платформы» с «Visual Studio 2012 (v110)» на «Visual Studio 2008 (v90)». Как только это изменение было сделано, компиляция работала, и поставщик учетных данных работал так же, как и при компиляции с использованием VS2008 напрямую. Никакие другие настройки не были изменены с этим тестом. Я могу работать с этим решением, но, похоже, я смогу заставить его работать, используя набор инструментов платформы VS2012, поэтому я бы предпочел пока не останавливаться на этом, потому что компоновщик VS2008 может быть очень глючным.

3

Решение

Оказывается, что с выпуском Windows 8 и последующим изменением поставщиков учетных данных, начиная с Visual Studio 2012, константа CLSID_PasswordCredentialProvider начала указывать на поставщика учетных данных пароля v2, а не на поставщика учетных данных пароля v1 (версия, которая Windows 7 использует). Поэтому, чтобы правильно скомпилировать образец поставщика завернутых учетных данных, который я тестировал, необходимо было изменить следующую строку в CSampleProvider.cpp:

hr = CoCreateInstance(CLSID_PasswordCredentialProvider, NULL, CLSCTX_ALL, IID_PPV_ARGS(&pUnknown));

вместо этого указать на поставщика учетных данных V1:

hr = CoCreateInstance(CLSID_V1PasswordCredentialProvider, NULL, CLSCTX_ALL, IID_PPV_ARGS(&pUnknown));

Как только это было сделано, и проект был перекомпилирован и установлен, он работал как ожидалось.

Дополнительную информацию об этой проблеме можно найти по адресу: http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/376d6eb6-1a40-4721-abdc-27870966a1da/how-can-i-build-the-windows-7-credential-provider-samples- используя-зрительно-студия-2012? Форум = windowsgeneraldevelopmentissues

1

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

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