CredUICmdLinePromptForCredentialsW-Funktion (wincred.h)
Die CredUICmdLinePromptForCredentials-Funktion fordert anmeldeinformationen von einem Benutzer an, der in einer Befehlszeilenanwendung (Konsolenanwendung) arbeitet, und akzeptiert diese. Der vom Benutzer eingegebene Name und das Kennwort werden zur Überprüfung an die aufrufende Anwendung zurückgegeben.
Syntax
CREDUIAPI DWORD CredUICmdLinePromptForCredentialsW(
[in] PCWSTR pszTargetName,
[in] PCtxtHandle pContext,
[in, optional] DWORD dwAuthError,
[in, out] PWSTR UserName,
[in] ULONG ulUserBufferSize,
[in, out] PWSTR pszPassword,
[in] ULONG ulPasswordBufferSize,
[in, out] PBOOL pfSave,
[in] DWORD dwFlags
);
Parameter
[in] pszTargetName
Ein Zeiger auf eine NULL-Zeichenfolge, die den Namen des Ziels für die Anmeldeinformationen enthält, in der Regel einen Servernamen. Für DFS-Verbindungen hat diese Zeichenfolge das Format ServerName\ShareName. Der Parameter pszTargetName wird verwendet, um die Zielinformationen zu identifizieren, und wird zum Speichern und Abrufen der Anmeldeinformationen verwendet.
[in] pContext
Derzeit reserviert und muss NULL sein.
[in, optional] dwAuthError
Gibt an, warum die Aufforderung zur Eingabe von Anmeldeinformationen erforderlich ist. Ein Aufrufer kann diesen Windows-Fehlerparameter übergeben, der von einem anderen Authentifizierungsaufruf zurückgegeben wird, damit das Dialogfeld bestimmte Fehler berücksichtigen kann. Wenn das Kennwort beispielsweise abgelaufen ist, status Code übergeben wird, fordert das Dialogfeld den Benutzer auf, das Kennwort für das Konto zu ändern.
[in, out] UserName
Ein Zeiger auf eine NULL-Zeichenfolge, die den Benutzernamen der Anmeldeinformationen enthält. Wenn für pszUserName eine Zeichenfolge mit ungleicher Länge angegeben wird, wird der Benutzer nur zur Eingabe des Kennworts aufgefordert. Bei anderen Anmeldeinformationen als Benutzername/Kennwort kann ein gemarstes Format der Anmeldeinformationen übergeben werden. Diese Zeichenfolge wird durch Aufrufen von CredMarshalCredential erstellt.
Diese Funktion schreibt den vom Benutzer bereitgestellten Namen in diesen Puffer und kopiert maximal ulUserNameMaxChars-Zeichen . Die Zeichenfolge in diesem Format kann durch Aufrufen der CredUIParseUsername-Funktion in das Benutzernamen-/Kennwortformat konvertiert werden. Die Zeichenfolge im gemarshallten Format kann direkt an einen Sicherheitsunterstützungsanbieter (Security Support Provider , SSP) übergeben werden.
Wenn das CREDUI_FLAGS_DO_NOT_PERSIST-Flag nicht angegeben wird, ist der in diesem Parameter zurückgegebene Wert von einer Form, die nicht überprüft, gedruckt oder beibehalten werden sollte, außer an CredUIParseUsername zu übergeben. Die nachfolgenden Ergebnisse von CredUIParseUsername können nur an eine clientseitige Authentifizierungs-API wie WNetAddConnection oder die SSP-API übergeben werden.
[in] ulUserBufferSize
Die maximale Anzahl von Zeichen, die in pszUserName kopiert werden können, einschließlich des beendenden NULL-Zeichens .
[in, out] pszPassword
Ein Zeiger auf eine NULL-Zeichenfolge, die das Kennwort für die Anmeldeinformationen enthält. Wenn für pszPassword eine Zeichenfolge mit ungleicher Länge angegeben wird, wird der Kennwortparameter mit der Zeichenfolge vorab ausgefüllt.
Diese Funktion schreibt das vom Benutzer angegebene Kennwort in diesen Puffer und kopiert maximal ulPasswordMaxChars-Zeichen . Wenn das CREDUI_FLAGS_DO_NOT_PERSIST-Flag nicht angegeben ist, ist der in diesem Parameter zurückgegebene Wert von einer Form, die nicht überprüft, gedruckt oder beibehalten werden darf, außer an eine clientseitige Authentifizierungsfunktion wie WNetAddConnection oder eine SSP-Funktion zu übergeben.
Wenn Sie das Kennwort verwendet haben, löschen Sie das Kennwort aus dem Arbeitsspeicher, indem Sie die SecureZeroMemory-Funktion aufrufen. Weitere Informationen zum Schutz von Kennwörtern finden Sie unter Behandeln von Kennwörtern.
[in] ulPasswordBufferSize
Die maximale Anzahl von Zeichen, die in pszPassword kopiert werden können, einschließlich des beendenden NULL-Zeichens .
[in, out] pfSave
Ein Zeiger auf eine BOOL , der den Anfangszustand der Save-Nachricht angibt und den Status der Save-Nachricht empfängt, nachdem der Benutzer an die Eingabeaufforderung geantwortet hat. Wenn pfSave nicht NULL ist und CredUIPromptForCredentials NO_ERROR zurückgibt, gibt pfSave den Status der Save-Nachricht zurück. Wenn das CREDUI_FLAGS_PERSIST-Flag angegeben wird, wird die Save-Nachricht nicht angezeigt, sondern als "y" betrachtet. Wenn das CREDUI_FLAGS_DO_NOT_PERSIST-Flag angegeben und CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX nicht angegeben ist, wird die Save-Nachricht nicht angezeigt, sondern als "n" betrachtet.
[in] dwFlags
Ein DWORD-Wert , der ein besonderes Verhalten für diese Funktion angibt. Dieser Wert kann eine bitweise-OR-Kombination aus 0 oder mehr der folgenden Werte sein.
Wert | Bedeutung |
---|---|
|
Zeigen Sie eine Benutzeroberfläche an, wenn die Anmeldeinformationen von vorhandenen Anmeldeinformationen im Anmeldeinformations-Manager zurückgegeben werden können. Dieses Flag ist nur zulässig, wenn auch CREDUI_FLAGS_GENERIC_CREDENTIALS angegeben ist und nur in Verbindung mit CREDUI_FLAGS_GENERIC_CREDENTIALS verwendet wird. |
|
Zeigen Sie die Speichernachricht nicht an oder speichern Sie keine Anmeldeinformationen.
CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX kann auch übergeben werden, um nur die Speichernachricht anzuzeigen und das Ergebnis in pfSave zurückzugeben. |
|
Fordern Sie den Benutzernamen/das Kennwort an. Wenn der parameter pszUserName angegeben wird, wird der Benutzername weggelassen. Wenn die Anmeldeinformationen beibehalten werden, speichern Sie den übergebenen Benutzernamen mit den Anmeldeinformationen. |
|
Gibt an, dass der Aufrufer CredUIConfirmCredentials aufruft , um zu bestimmen, ob die zurückgegebenen Anmeldeinformationen tatsächlich gültig sind. Dadurch wird sichergestellt, dass ungültige Anmeldeinformationen nicht im Anmeldeinformations-Manager gespeichert werden. Geben Sie dieses Flag an, es sei denn, es ist CREDUI_FLAGS_DO_NOT_PERSIST angegeben. |
|
Betrachten Sie die vom Benutzer eingegebenen Anmeldeinformationen als generische Anmeldeinformationen. |
|
Ignorieren Sie dieses Flag im Hintergrund. |
|
Zeigen Sie die Speichernachricht nicht an, sondern speichern Sie die Anmeldeinformationen so, als ob der Benutzer "y" antwortet. |
|
Ignorieren Sie dieses Flag im Hintergrund. |
|
Reserviert für zukünftige Verwendung; übergeben Sie dieses Flag nicht. |
|
Verwenden Sie eine intelligente Karte und fordern Sie eine PIN an. Wenn mehrere intelligente Karte verfügbar sind, wählen Sie eine davon aus. Wenn der pszUserName-Parameter eine Zeichenfolge übergibt, die nicht leer ist, muss die Zeichenfolge mit dem UPN übereinstimmen, der dem Zertifikat auf einer der Smartcards zugeordnet ist. Ein UPN stimmt überein, wenn die Zeichenfolge mit dem gesamten UPN im Zertifikat übereinstimmt, oder wenn die Zeichenfolge mit dem Teil links neben dem At-Zeichen (@) im UPN des Zertifikats übereinstimmt. Wenn eine Übereinstimmung vorhanden ist, wird die übereinstimmende intelligente Karte ausgewählt. |
|
Dieses Flag ist nur bei der Suche nach übereinstimmenden Anmeldeinformationen zum Vorabausfüllen des Dialogfelds von Bedeutung, falls die Authentifizierung fehlschlägt. Wenn dieses Flag angegeben wird, werden die Anmeldeinformationen für Die Wildcard nicht übereinstimmen. Es hat keine Auswirkung beim Schreiben von Anmeldeinformationen. CredUI erstellt keine Anmeldeinformationen, die Wildcardzeichen enthalten. Alle gefundenen Wurden entweder explizit vom Benutzer erstellt oder programmgesteuert erstellt, wie bei einer RAS-Verbindung. |
|
Zeigen Sie die Speichernachricht an, und geben Sie true im Parameter pfSave out zurück, wenn der Benutzer "y" antwortet, FALSE , wenn der Benutzer "n" antwortet. CREDUI_FLAGS_DO_NOT_PERSIST muss angegeben werden, um dieses Flag verwenden zu können. |
|
Bei den Anmeldeinformationen handelt es sich um ausführende Anmeldeinformationen. Der Parameter pszTargetName gibt den Namen des Befehls oder Programms an, der ausgeführt wird. Es wird nur zu Aufforderungszwecken verwendet. |
Rückgabewert
Der Rückgabewert ist ein DWORD und kann einer der folgenden Werte sein.
Wert | BESCHREIBUNG |
---|---|
|
Diese status wird für jede der ungültigen Flagkombinationen zurückgegeben. |
|
Entweder ist pszTargetNameNULL, die leere Zeichenfolge oder länger als CREDUI_MAX_DOMAIN_LENGTH, oder pUiInfo ist nicht NULL , und die CredUI_INFO Struktur, auf die verwiesen wird, erfüllte keine der folgenden Anforderungen:
|
|
Der Anmeldeinformations-Manager kann nicht verwendet werden. In der Regel wird dieser Fehler behandelt, indem CredUICmdLinePromptForCredentials aufgerufen und das flag CREDUI_FLAGS_DO_NOT_PERSIST übergeben wird. |
|
Der Benutzer hat OK ausgewählt. Die Variablen pszUserName, pszPassword und pfSave geben die zuvor dokumentierten Werte zurück. |
Hinweise
Die Flags CREDUI_FLAGS_REQUIRE_SMARTCARD, CREDUI_FLAGS_REQUIRE_CERTIFICATE und CREDUI_FLAGS_EXCLUDE_CERTIFICATE schließen sich gegenseitig aus.
Wenn CREDUI_FLAGS_DO_NOT_PERSIST angegeben ist, muss entweder pszTargetName oder uiInfo-pszMessageText> und uiInfo-pszCaption> angegeben werden.
Die flags CREDUI_FLAG_USERNAME_TARGET_CREDENTIALS und CREDUI_FLAGS_GENERIC_CREDENTIALS schließen sich gegenseitig aus. Wenn keines angegeben ist, handelt es sich bei den Anmeldeinformationen um Domänenanmeldeinformationen.
Wenn CREDUI_FLAGS_GENERIC_CREDENTIALS nicht angegeben oder CREDUI_FLAGS_COMPLETE_USERNAME angegeben ist, wird der eingegebene Name syntaxgeprüft. Die überprüfte Syntax bedeutet, dass dieselben Regeln verwendet werden, wie sie von CredUIParseUserName impliziert werden. Wenn der eingegebene Name ungültig ist, wird der Benutzer zur Eingabe eines gültigen Namens aufgefordert. Wenn der Domänenteil des eingegebenen Namens fehlt, wird basierend auf dem Zielnamen einer angegeben.
Wenn CREDUI_FLAGS_GENERIC_CREDENTIALS angegeben ist und auch CREDUI_FLAGS_VALIDATE_USERNAME angegeben wird, wird der eingegebene Name syntaxgeprüft. Wenn der eingegebene Name ungültig ist, wird der Benutzer zur Eingabe eines gültigen Namens aufgefordert.
Wenn CREDUI_FLAGS_GENERIC_CREDENTIALS angegeben ist und weder CREDUI_FLAGS_COMPLETE_USERNAME noch CREDUI_FLAGS_VALIDATE_USERNAME angegeben wird, wird der typisierte Name in keiner Weise syntaxgeprüft.
Wenn weder CREDUI_FLAGS_PERSIST noch CREDUI_FLAGS_DO_NOT_PERSIST festgelegt sind, wird die Speichernachricht angezeigt und steuert, ob die Anmeldeinformationen gespeichert werden.
Wenn CREDUI_FLAGS_PROMPT_FOR_SAVE angegeben ist, darf der pfSave-Parameter nicht NULL sein.
Die flags CREDUI_FLAGS_REQUIRE_SMARTCARD und CREDUI_FLAGS_EXCLUDE_CERTIFICATES schließen sich gegenseitig aus. CredUICmdLinePromptForCredentials unterstützt die Aufforderung zur Eingabe eines Smart Karte-Zertifikats oder kennwortbasierter Anmeldeinformationen. Es werden keine Zertifikate unterstützt, die keine intelligenten Karte Zertifikate sind oder bei einem einzigen Aufruf zur Eingabe von beidem aufgefordert werden.
Anrufmodi
- Der Aufrufer versucht, auf die Zielressource zuzugreifen, ruft credui auf (übergibt eine Beschreibung der Zielressource und den Fehler status), ruft CredUIParseUserName auf, greift erneut auf die Zielressource zu und ruft dann CredUIConfirmCredentials auf.
- Der Aufrufer kann zur Eingabe von Anmeldeinformationen auffordern, ohne auf Ressourcen zuzugreifen, indem er CREDUI_FLAGS_DO_NOT_PERSIST.
Zielinformationen sind Informationen zum Speicherort der Ressource, auf die zugegriffen werden soll. Rufen Sie CredGetTargetInfo auf, um eine Liste aller potenziellen Zielnamen für eine Ressource anzuzeigen. CredGetTargetInfo gibt Informationen zurück, die vom Negotiate-, NTLM- oder Kerberos-Authentifizierungspaket zwischengespeichert wurden, wenn eines dieser Pakete zur Authentifizierung beim benannten Ziel verwendet wurde. CredGetTargetInfo gibt einige oder alle der folgenden Namen für das Ziel zurück:
- NetBIOS-Servername des Computers
- DNS-Servername des Computers
- NetBIOS-Domänenname der Domäne, zu der der Computer gehört
- DNS-Domänenname der Domäne, zu der der Computer gehört
- DNS-Strukturname der Struktur, zu der der Computer gehört
- Name des Pakets, das die Informationen gesammelt hat
Anmeldeinformationen werden im Anmeldeinformations-Manager basierend auf dem Zielnamen gespeichert. Jeder Zielname wird so allgemein wie möglich gespeichert, ohne mit anmeldeinformationen zu kollidieren, die bereits im Anmeldeinformations-Manager gespeichert sind. Ein wichtiger Effekt des Speicherns von Anmeldeinformationen nach Zielnamen besteht darin, dass ein bestimmter Benutzer nur über eine Anmeldeinformation pro Ziel verfügen kann, die im Anmeldeinformations-Manager gespeichert werden kann.
Hinweis
Der wincred.h-Header definiert CredUICmdLinePromptForCredentials als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wincred.h |
Bibliothek | Credui.lib |
DLL | Credui.dll |