Jeg har selv researchet lidt på dette for et års tid siden, og er ikke kommet frem til en nem løsning. Som udgangspunkt er unlock programmatisk ikke understøttet af sikkerhedsgrunde.
Man skulle kunne komme udenom ved helt at erstatte Windows' logon komponent, msgina.dll (GINA = Graphical Identification And Authentication), med sin egen. Jeg mener at have set en artikel på MSDN, som linker til koden til en MSGINA stub, der kalder ned i Windows' egen, så man ikke behøver at skrive al funktionaliteten selv. Jeg kan dog ikke finde den i skrivende stund.
Denne GINA skal skrives i native kode (typisk som alm C) og kompileres til en dll, som skal erstatte den eksisterende. Løsningen kræver at man bruger en del tid til at sætte sig ind i, hvordan dette skal fungere og spille sammen med Windows, og at man kan programmere i native C. Den er også upraktisk, idet den nye DLL skal erstatte en standard-windows, så der er nogen issues med distribuering og få lavet et setup program, som kan installere på alle Windows versioner uden sikkerhedsadvarsler.
Endelig, til Windows Vista er msgina.dll så vidt jeg husker erstattet af en anden grænseflade til logon systemet. Så hvis dit program skal fungere på både XP og Vista, skal man også tage højde for dette.
Prøv at søge på Google efter WinLogon og MSGINA, eller start her:
http://msdn2.microsoft.com/en-us/library/aa378750(VS.85).aspx