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.