Installing a Custom GINA
Recently, we've had some questions about how to install a 3rd party GINA as an Install Software step during an OSD Task Sequence. The best solution is to install the GINA in the reference image outside of OSD. However, if this is not possible and the GINA must be installed during the Task Sequence, then a small workaround is required. Frist I'll explain why GINA installations are a special consideration for OSD. Next I'll outline a method which should enable this scenario.
OSDGINA.DLL
When deploying Windows 2000, Windows XP, and Windows 2003, OSD installs a custom GINA (OSDGINA.DLL) after applying the image (or via cmdlines.txt for the unattended install case). This allows OSD to install the ConfigMgr client, complete the task sequence, and block user logon until the task sequence is complete.
When OSDGINA.DLL is installing, it checks the registry to see if a GINA other than MSGINA is installed, and if so, backs up the value of HKLM\Software\Microsoft\Windows NT\CurrentVertion\Winlogon!GinaDLL to OSDOldGinaDLL. When the task sequence is complete and OSDGINA.DLL is uninstalling, it restores any value which was backed up to OSDOldGinaDLL.
When a custom GINA is installed, it overwites the GinaDLL registry value and triggers a reboot. This effectively aborts the Task Sequence, since it is OSDGINA.DLL that bootstraps the Task Sequence after any reboots in the new operating system, until the Task Sequence has completed. Since OSD pauses Software Distribution until the end of the Task Sequence, this also means that Software Distribution will remain in a paused state.
The Solution
For the installation of a custom GINA in an Install Software Step (as part of an OSD Task Sequence) to work correctly, the GinaDLL value needs to be restored to “OSDGINA.DLL” and the OSDOldGinaDLL value to be set to the GINA DLL for the custom GINA. This can be accomplished by suppressing the reboot triggered by the Install Software action for the custom GINA, and running a custom command line step right after to make the registry changes. Assuming for the sake of illustration that the custom GINA DLL is MYGINA.DLL, the registry needs to end up looking like this:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon!GinaDLL = OSDGINA.DLL
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon!OSDOldGinaDLL = MYGINA.DLL
You can have this step reboot to clear the pending reboot, if desired.
Comments
Anonymous
January 01, 2003
Please explain more about creating custom GINA as I am new to this concept.Anonymous
August 22, 2008
Hi, I was wondering if you could give me a step brief by step on this as I am having difficulty with installing my custom Gina. I have included my custom gina in the reference image but it is not applied after the captured wim is deployed via OSD in SCCM. I have tried the above and many variations, but I am unable to automate the inclusion of my custom gina. Please note I am working with XP SP3 OS images. Any advice would be appreciated, Thanks, IB.Anonymous
January 15, 2010
Has anyone been able to get this woking? The task squence (SCCM/MDT2010) sets the new gena value but then the task sequence fails on reboot. At which point does the task sequence regad the OSDOldGinaDLL value and set the Ginadll value and does this work with MDT2010? LouisAnonymous
March 24, 2010
Hi I'm trying to figure out how a Windows 7 SCCM deployment "kicks off" the Task Sequence after Windows Setup. It's not an entry in unattend.xml and it's also not OSDGINA.dll... but how does it work? Thanks ClaudeAnonymous
April 16, 2010
Great post. Was exactly what I was looking for. Thank you.Anonymous
April 26, 2010
Was exactly what I needed to have machines revert back to image installed finger print reader GINA.