WinBioEnrollBegin gives "DuplicateTemplate" error when try to begin fingerprint enrollment

108 Views Asked by At

I have a Windows service runs under LocalSystem account. Service can identify fingerprint correctly. My problem is when i start enrollment it gives "DuplicateTemplate" error despite i delete template before starting enrollment.

I open session with below code;

public void OpenBiometricSession()
{
    session = WinBio32.OpenSession(WinBioBiometricType.Fingerprint, WinBioPoolType.System, WinBioSessionFlag.Raw, null, WinBioDatabaseId.Default);

    WinBio32.WinBioAcquireFocus();
}

I delete user template by below code before i call AddEnrollment;

public void DeleteUserTemplate(SecurityIdentifier userSid)
{
    var cloneIdentity = new WinBioIdentity(userSid);

    if (cloneIdentity != null && cloneIdentity.AccountSid != null)
    {
        WinBio32.DeleteTemplate(session, unitId, cloneIdentity, 
WinBioBiometricSubType.Any);
    }
}

I start enrollment with below code;

private bool AddEnrollment()
{
    var ccc = WinBio32.EnrollBegin(session, WinBioBiometricSubType.LhIndexFinger, 
    unitId);

    var code = WinBioErrorCode.MoreData;

    for (var swipes = 1; code != WinBioErrorCode.Ok; swipes++)
    {
        code = WinBio32.EnrollCapture(session, out var rejectDetail);

        switch (code)
        {
            case WinBioErrorCode.MoreData:
            case WinBioErrorCode.BadCapture:
               {
                   enrollmentActionCallback?.Invoke($"Parmağınızı kaldırın ve tekrar 
yerleştirin / {swipes}");

                break;
            }
        case WinBioErrorCode.Ok:
            {
                enrollmentActionCallback?.Invoke($"Parmak izi tanımlama başarılı");

                break;
            }
        default:
            {
                enrollmentActionCallback?.Invoke("Bilinmeyen bir hata oluştu");

                WinBio32.EnrollDiscard(session);

                return false;
            }
    }
}

WinBio32.EnrollCommit(session, out identity);

return true;
}

Below code always gives "DuplicateTemplate" error despite i delete template before;

var ccc = WinBio32.EnrollBegin(session, WinBioBiometricSubType.LhIndexFinger, 
unitId);

When I test same code in a Form application, it succeeds. Only fails when runs in Windows Service

Anyone can help? Thanks.

0

There are 0 best solutions below