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 |
---|---|
|
Die kennwortbasierten Anmeldeinformationen werden gelöscht. |
|
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 |
---|---|
|
Der Aufrufer verfügt nicht über die Berechtigung zum Löschen der Anmeldeinformationen. |
|
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 |