I have used Microsoft's Credential Provider samples to put together a wrapper for the default Windows 7 logon screen.
All appears to be running well in terms of the new CP, but I am getting duplicate tiles appearing on my logon screen, namely the default Windows tile, and my 'wrapped' tile.
How can I remove the default Windows tile, as this does not incorporate my changes?
There are two possible solutions:

1. Take a closer look at
GetCredentialCountfunction of your provider.In case of wrapping existing provider, in that function you should get a count of credentials from underlaying provider (that one being wrapped) and wrap them by yours credentials. Maybe, somehow (due to logical errors in code) you make several duplicates of credentials. (I've never wrote a wrapper, but this approach may have sense).
2. Another way is to write your own
CredentialProviderFilterby implementingICredentialProviderFilterinterface.! If you take a look at
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authenticationregistry key, you will see that among other subkeys there are 2 interesting ones:Credential ProvidersandCredential Provider Filters.Thats how it looks on my PC:
Under
Credential Providersare listed all credential providers of your windows, and among them there is your own credential provider. The idea ofCredential Provider Filteris to filter out all other credential providers, except yours one. You can distinguish your credential provider from others byGUID.The implementation of this is very simple -- you have to implement just one method from
ICredentialProviderFilterinterface. This method isICredentialProviderFilter::Filter.So in result, all providers will be disallowed except yours one. You can implement
ICredentialProviderFilterandICredentialProviderin one module. As far as I remember there is a sample for credential provider filter inMicrosoft Windows SDK.Good luck!