Share via


WinBioRemoveCredential-Funktion (winbio.h)

Löscht biometrische Anmeldeinformationen für einen angegebenen Benutzer. Ab Windows 10 Build 1607 ist diese Funktion für die Verwendung mit einem mobilen Image verfügbar.

Syntax

HRESULT WinBioRemoveCredential(
  [in] WINBIO_IDENTITY        Identity,
  [in] WINBIO_CREDENTIAL_TYPE Type
);

Parameter

[in] Identity

Eine WINBIO_IDENTITY Struktur, die die SID des Benutzerkontos enthält, für das die Anmeldeinformationen entfernt werden.

[in] Type

Ein WINBIO_CREDENTIAL_TYPE Wert, der den Anmeldeinformationstyp angibt. Mögliche Werte:

Wert Bedeutung
WINBIO_CREDENTIAL_PASSWORD
Die kennwortbasierten Anmeldeinformationen werden gelöscht.
WINBIO_CREDENTIAL_ALL
Alle Anmeldeinformationen für den Benutzer werden gelöscht.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird S_OK zurückgegeben. Wenn die Funktion fehlschlägt, wird ein HRESULT-Wert zurückgegeben, der den Fehler angibt. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.

Rückgabecode Beschreibung
E_ACCESSDENIED
Der Aufrufer verfügt nicht über die Berechtigung zum Löschen der Anmeldeinformationen.
WINBIO_E_CRED_PROV_NO_CREDENTIAL
Die angegebene Identität ist nicht vorhanden oder enthält keine zugehörigen Datensätze im Anmeldeinformationsspeicher.

Hinweise

Benutzer, die nicht über erhöhte Berechtigungen verfügen, können nur ihre eigenen Anmeldeinformationen löschen. Benutzer mit erhöhten Rechten können Anmeldeinformationen für jedes Benutzerkonto entfernen. Das Löschen von Anmeldeinformationen wirkt sich nicht auf biometrische Registrierungen für diesen Benutzer aus. Das Löschen biometrischer Anmeldeinformationen hindert den Benutzer nicht daran, sich mit einem Kennwort anzumelden. Nur prozesse mit mittlerer und höherer Integrität können Anmeldeinformationen löschen. Wenn ein Prozess mit niedrigerer Integrität versucht, Anmeldeinformationen zu löschen, gibt die Funktion E_ACCESSDENIED zurück.

Beispiele

Die folgende Funktion zeigt, wie WinBioRemoveCredential aufgerufen wird , um Anmeldeinformationen für einen bestimmten Benutzer zu entfernen. Die Hilfsfunktion GetCurrentUserIdentity ist ebenfalls enthalten. Verknüpfen Sie die statische Winbio.lib-Bibliothek, und schließen Sie die folgenden Headerdateien ein:

  • Windows.h
  • Stdio.h
  • Conio.h
  • Winbio.h
HRESULT RemoveCredential()
{
    HRESULT hr = S_OK;
    WINBIO_IDENTITY identity;

    // Find the identity of the user.
    wprintf_s(L"\n Finding user identity.\n");
    hr = GetCurrentUserIdentity( &identity );
    if (FAILED(hr))
    {
        wprintf(L"\n User identity not found. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    // Remove the user credentials.
    hr = WinBioRemoveCredential(identity, WINBIO_CREDENTIAL_PASSWORD);
    if (FAILED(hr)) 
    {
        wprintf(L"\n WinBioRemoveCredential failed. hr = 0x%x\n", hr);
        goto e_Exit;
    }

    wprintf_s(L"\n User credentials successfully removed.\n");

e_Exit:

    wprintf_s(L"\n Press any key to exit...");
    _getch();

    return hr;
}

//------------------------------------------------------------------------
// The following function retrieves the identity of the current user.
// This is a helper function and is not part of the Windows Biometric
// Framework API.
//
HRESULT GetCurrentUserIdentity(__inout PWINBIO_IDENTITY Identity)
{
    // Declare variables.
    HRESULT hr = S_OK;
    HANDLE tokenHandle = NULL;
    DWORD bytesReturned = 0;
    struct{
        TOKEN_USER tokenUser;
        BYTE buffer[SECURITY_MAX_SID_SIZE];
    } tokenInfoBuffer;

    // Zero the input identity and specify the type.
    ZeroMemory( Identity, sizeof(WINBIO_IDENTITY));
    Identity->Type = WINBIO_ID_TYPE_NULL;

    // Open the access token associated with the
    // current process
    if (!OpenProcessToken(
            GetCurrentProcess(),            // Process handle
            TOKEN_READ,                     // Read access only
            &tokenHandle))                  // Access token handle
    {
        DWORD win32Status = GetLastError();
        wprintf_s(L"Cannot open token handle: %d\n", win32Status);
        hr = HRESULT_FROM_WIN32(win32Status);
        goto e_Exit;
    }

    // Zero the tokenInfoBuffer structure.
    ZeroMemory(&tokenInfoBuffer, sizeof(tokenInfoBuffer));

    // Retrieve information about the access token. In this case,
    // retrieve a SID.
    if (!GetTokenInformation(
            tokenHandle,                    // Access token handle
            TokenUser,                      // User for the token
            &tokenInfoBuffer.tokenUser,     // Buffer to fill
            sizeof(tokenInfoBuffer),        // Size of the buffer
            &bytesReturned))                // Size needed
    {
        DWORD win32Status = GetLastError();
        wprintf_s(L"Cannot query token information: %d\n", win32Status);
        hr = HRESULT_FROM_WIN32(win32Status);
        goto e_Exit;
    }

    // Copy the SID from the tokenInfoBuffer structure to the
    // WINBIO_IDENTITY structure. 
    CopySid(
        SECURITY_MAX_SID_SIZE,
        Identity->Value.AccountSid.Data,
        tokenInfoBuffer.tokenUser.User.Sid
        );

    // Specify the size of the SID and assign WINBIO_ID_TYPE_SID
    // to the type member of the WINBIO_IDENTITY structure.
    Identity->Value.AccountSid.Size = GetLengthSid(tokenInfoBuffer.tokenUser.User.Sid);
    Identity->Type = WINBIO_ID_TYPE_SID;

e_Exit:

    if (tokenHandle != NULL)
    {
        CloseHandle(tokenHandle);
    }

    return hr;
}


Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbio.h (winbio.h einschließen)
Bibliothek Winbio.lib
DLL Winbio.dll

Weitere Informationen

WinBioRemoveAllCredentials

WinBioRemoveAllDomainCredentials

WinBioSetCredential