Programmatically extend/customize the windows logon prompt - windows

Is the windows (XP, Vista, 7) logon box extensible ? Is there an "logon box" analog to windows shell extensions ?
As a made up example, I have a windows host with one shared account used by my team. I want my team members to be able to login to the host desktop by solving a captcha. I would like to modify the logon box to do this (instead of say, having an autologon and then being shown a fullscreen captcha program)

To customize the logon window, you have to create a Credential Provider in Vista/7, and a GINA dll in XP.

Related

Launch my application before the Windows logon screen

In a personal project, I want to display my application before (or above) the Windows Logon, ie just before entering the Windows password.
The application must "hide" the password entry screen. I used to launch an application at Windows startup but this after viewing the Windows desktop.
Is it possible to do this please? Should I create a Windows service that will launch my application?
Thanks for your help
If this is just a personal project on your own machine you could set Windows to autologon and then just run your application like a normal startup shortcut.
A NT service is the only documented way to run code before a user logs on. However, spawning a new process in another session and interacting with the Winlogon desktop and putting yourself on top of LogonUI.exe is going to be a hack.

React to failed login in Windows, and launch an interactive window

I need to place a link on the Windows home screen (before a user is logged in)
When this link is clicked, I want to launch a browser pointed at a specific web app.
This would be used to enable self-service password resets.
Is this possible? How would it be done?
EDIT: This must work on Windows 7 (and above) and Windows Server 2008 (and above)
In earlier versions of Windows, you could write a GINA DLL, which could completely replace the interface that was displayed to users during the logon process.
However, beginning with Windows Vista, GINA was removed and support was added for Credential Providers. While they provide improvements over the GINA model used previously, they also limit the flexibility afforded to developers with GINA - gone are the days when you could display a custom interface.
This isn't to say that it's not possible to have a custom provider display some UI elements. But launching a full-blown web browser is a horrible idea, plain and simple, and just asking for trouble.
You may want to check out the article Custom Login Experiences: Credential Providers in Windows Vista which is not fully up to date but is a good place to start from nonetheless.

Windows UAC, Admin prompt, Run Application with current user rights

I want to use a Application on Windows 7 without Admin priviliges.
(Sure for the install process i used Admin priviliges)
Now i had following problem:
When i want to start the application the UAC popup ask for an Admin Account to run the program. But the User had no Admin account and can only click "No" so the Application is closed.
Is it possible to use this application with the rights from the current user and deactivate the UAC prompt?
On Win XP, only popup a error message that the application had no admin priviliges.
But by selecting "Ok" the application is starting and working.
You need to create and embed a manifest into your application. This tells the operating system that your program was written to be compatible with the UAC built into Windows Vista (and later), and therefore does not need to be run as Administrator. Set the requested execution level to asInvoker.
See this article on MSDN for more details.
There's also a helpful, though somewhat more general, article that appeared in the MSDN Magazine regarding UAC: Teach Your Apps To Play Nicely With Windows Vista User Account Control

How can I customize the login screen for Windows Vista & 7?

I need to create a windows login UI for Windows 7 & Vista which logs user name and image from webcam (replacing their login screen). I don't know where to start from. Can I do this in C# or will I have to use C++? Any link will be helpful.
If you just need Windows 7 and Windows Vista support, you are looking for Credential Provider. You can find some samples in Windows SDK.
If you want to extend pre-Vista Windows, you are looking for GINA

Screen capture and event with Vista UAC

I'ved developed a c# application that captures screens using bitblt and sends keyboard and mouse events using calls to keybd_event and mouse_event.
According to Microsoft I needed to modify the app.manifest with:
requestedExecutionLevel level="highestAvailable" uiAccess="true"
Sign the application and place it in a trusted location (program files).
I have done all of these to get the application to run under elevated priviledges under Vista but when UAC dialogs appear it does not capture those screens and the keyboard and mouse events do not reach the UAC dialog.
I am guess that UAC runs in a different desktop?? if so, how would i capture that? and how can i detect when the desktop switches to a UAC dialog in c#? or have i just missed a step?
UAC runs on the secure desktop, only trusted processes running on the system account are allowed to run in that context.
This is to prevent exactly what you are trying to achieve - processes spoofing or capturing user input.
You cannot. The UAC desktop is secure because it doesn't allow anyone to access it.
To detect the desktop switch event, I would try to use SENS or WTSRegisterSessionNotification. But it doesn't look very promising.

Resources