Поделиться через


Функция CredUIPromptForWindowsCredentialsA (wincred.h)

Функция CredUIPromptForWindowsCredentials создает и отображает настраиваемое диалоговое окно, позволяющее пользователям предоставлять учетные данные с помощью любого поставщика учетных данных, установленного на локальном компьютере.

Синтаксис

CREDUIAPI DWORD CredUIPromptForWindowsCredentialsA(
  [in, optional]      PCREDUI_INFOA pUiInfo,
  [in]                DWORD         dwAuthError,
  [in, out]           ULONG         *pulAuthPackage,
  [in, optional]      LPCVOID       pvInAuthBuffer,
  [in]                ULONG         ulInAuthBufferSize,
  [out]               LPVOID        *ppvOutAuthBuffer,
  [out]               ULONG         *pulOutAuthBufferSize,
  [in, out, optional] BOOL          *pfSave,
  [in]                DWORD         dwFlags
);

Параметры

[in, optional] pUiInfo

Указатель на структуру CREDUI_INFO , содержащую сведения для настройки внешнего вида диалогового окна, отображаемого этой функцией.

Если элемент hwndParent структуры CREDUI_INFO не имеет значения NULL, эта функция отображает модальное диалоговое окно по центру родительского окна.

Если элемент hwndParent структуры CREDUI_INFO имеет значение NULL, функция отображает диалоговое окно по центру экрана.

Эта функция игнорирует элемент hbmBanner структуры CREDUI_INFO .

[in] dwAuthError

Код ошибки Windows, определенный в Winerror.h, который отображается в диалоговом окне. Если собранные ранее учетные данные были недопустимыми, вызывающий объект использует этот параметр для передачи сообщения об ошибке из API, который собрал учетные данные (например, Winlogon) в эту функцию. Соответствующее сообщение об ошибке форматируется и отображается в диалоговом окне. Задайте значение этого параметра равным нулю, чтобы сообщение об ошибке не отображалось.

[in, out] pulAuthPackage

Во входных данных значение этого параметра используется для указания пакета проверки подлинности, для которого сериализуются учетные данные в буфере pvInAuthBuffer . Если значение pvInAuthBuffer равно NULL и флаг CREDUIWIN_AUTHPACKAGE_ONLY задан в параметре dwFlags , перечисляются только поставщики учетных данных, способные сериализовать учетные данные для указанного пакета проверки подлинности.

Чтобы получить соответствующее значение для этого параметра для входных данных, вызовите функцию LsaLookupAuthenticationPackage и используйте значение параметра AuthenticationPackage этой функции.

В выходных данных этот параметр указывает пакет проверки подлинности, для которого сериализуются учетные данные в буфере ppvOutAuthBuffer .

[in, optional] pvInAuthBuffer

Указатель на большой двоичный объект учетных данных, используемый для заполнения полей учетных данных в диалоговом окне. Присвойте этому параметру значение NULL , чтобы оставить поля учетных данных пустыми.

[in] ulInAuthBufferSize

Размер буфера pvInAuthBuffer (в байтах ).

[out] ppvOutAuthBuffer

Адрес указателя, который в выходных данных указывает большой двоичный объект учетных данных. Для учетных данных Kerberos, NTLM или Negotiate вызовите функцию CredUnPackAuthenticationBuffer , чтобы преобразовать этот BLOB-объект в строковые представления учетных данных.

Завершив использование большого двоичного объекта учетных данных, очистите его из памяти, вызвав функцию SecureZeroMemory , и освободите ее, вызвав функцию CoTaskMemFree .

[out] pulOutAuthBufferSize

Размер буфера ppvOutAuthBuffer (в байтах ).

[in, out, optional] pfSave

Указатель на логическое значение, указывающее, выбрано ли поле Сохранить проверка в диалоговом окне, отображаемом этой функцией. В выходных данных значение этого параметра указывает, было ли выбрано поле Сохранить проверка, когда пользователь нажимает кнопку Отправить в диалоговом окне. Присвойте этому параметру значение NULL, чтобы игнорировать поле Сохранить проверка.

Этот параметр игнорируется, если флаг CREDUIWIN_CHECKBOX не задан в параметре dwFlags .

[in] dwFlags

Значение типа , указывающее поведение для этой функции. Это значение может быть побитовой или комбинацией одного или нескольких из следующих значений.

Значение Значение
CREDUIWIN_GENERIC
0x1
Вызывающий объект запрашивает, чтобы поставщик учетных данных вернул имя пользователя и пароль в виде обычного текста.

Это значение не может быть объединено с SECURE_PROMPT.

CREDUIWIN_CHECKBOX
0x2
В диалоговом окне появится поле Сохранить проверка.
CREDUIWIN_AUTHPACKAGE_ONLY
0x10
Следует перечислить только поставщиков учетных данных, поддерживающих пакет проверки подлинности, указанный параметром pulAuthPackage .

Это значение не может быть объединено с CREDUIWIN_IN_CRED_ONLY.

CREDUIWIN_IN_CRED_ONLY
0x20
Необходимо перечислить только учетные данные, указанные параметром pvInAuthBuffer для пакета проверки подлинности, указанного параметром pulAuthPackage .

Если этот флаг установлен, а параметр pvInAuthBuffer имеет значение NULL, функция завершается ошибкой.

Это значение нельзя объединить с CREDUIWIN_AUTHPACKAGE_ONLY.

CREDUIWIN_ENUMERATE_ADMINS
0x100
Поставщики учетных данных должны перечислять только администраторов. Это значение предназначено только для целей контроля учетных записей (UAC). Рекомендуется, чтобы внешние вызывающие не устанавливали этот флаг.
CREDUIWIN_ENUMERATE_CURRENT_USER
0x200
Необходимо перечислить только входящие учетные данные для пакета проверки подлинности, указанные параметром pulAuthPackage .
CREDUIWIN_SECURE_PROMPT
0x1000
Диалоговое окно учетных данных должно отображаться на защищенном рабочем столе. Это значение нельзя объединить с CREDUIWIN_GENERIC.

Windows Vista: Это значение поддерживается начиная с Windows Vista с пакетом обновления 1 (SP1).

CREDUIWIN_PREPROMPTING
0x2000
Диалоговое окно учетных данных вызывается функцией SspiPromptForCredentials , и клиенту будет предложено выполнить предварительное подтверждение. Если SSPIPFC_NO_CHECKBOX передается в параметре pvInAuthBuffer, поставщик учетных данных не должен отображать поле проверка.

Windows Vista: Это значение поддерживается начиная с Windows Vista с пакетом обновления 1 (SP1).

0x40000
Поставщик учетных данных не будет упаковывать имя центра AAD. Это применяется только к Azure AD присоединенным устройствам.

Windows 10 версии 1607: это значение поддерживается начиная с Windows 10 версии 1607.

CREDUIWIN_PACK_32_WOW
0x10000000
Поставщик учетных данных должен выровнять большой двоичный объект учетных данных, на который указывает параметр ppvOutAuthBuffer , с 32-разрядной границей, даже если поставщик работает в 64-разрядной системе.
0x80000000
Windows Hello учетные данные будут упакованы в буфер интеллектуальной карта проверки подлинности. Это относится только к поставщикам учетных данных для распознавания лиц, отпечатков пальцев и ПИН-кода.

Windows 10, версия 1809: это значение поддерживается начиная с Windows 10, версия 1809.

Возвращаемое значение

Если функция выполняется успешно, функция возвращает ERROR_SUCCESS. Если функция отменена пользователем, она возвращает ERROR_CANCELLED. Любое другое возвращаемое значение указывает, что не удалось загрузить функцию.

Комментарии

Эта функция не сохраняет учетные данные.

Приложения, использующие SSPI для проверки подлинности пользователей, не должны вызывать эту функцию. Вместо этого вызовите SspiPromptForCredentials.

Примечание

Заголовок wincred.h определяет CredUIPromptForWindowsCredentials как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header wincred.h
Библиотека Credui.lib
DLL Credui.dll