Search code examples
c++cwindowswindows-xpwinlogon

Add custom 2FA on Windows XP (after login)


I would like to create a custom 2FA on Windows XP (and above) for personal computers.

I know Windows XP is discontinued, but I'm using an old program relying on Windows XP, so for now I'm stuck on it.

I can write C/C++ code, but I don't know C#. So I'm trying to figure out a way to suspend userinit to show my app, then my app will either let userinit do its thing, or logout the user.

I've tried changing userinit in the registry to put my app which would load userinit itself, but it's easily hackable: My app can be closed, leaving the computer in a lockdown state, or taskmgr can be used to launch userinit or explorer.

If there are better way, I'm opened to suggestions, but I'd like to avoid ready made solutions (Rohos Logon Key works but can sometimes be worked around)


Solution

  • As far as I know you can do it only on C++ to implement GINA (for Windows XP). For Vista (and above) you need to implement Credential Provider. It can be implemented in both C++ and C#.