Gina Sample: Graphical Identification and Authentication DLL

The Gina sample demonstrates the Gina-related functions.

To install the Gina DLL, copy it into %systemroot%\SYSTEM32, add a registry value of type REG_SZ named GinaDLL under the key \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon, and reboot the machine.

WARNING! - It is possible to make your machine unusable if you install a replacement Gina and it fails. To avoid this situation, be sure that you have a method of accessing the %systemroot%\SYSTEM32 directory independent of the Windows NT® installation you are testing on.

If the Gina sample malfunctions, and you are not able to log on to fix the problem, you can recover by doing one of the following:

  • If the test machine is on the network and you have an account on another machine with Administrative privileges on the test machine, open the test machine registry remotely with regedt32 and delete the GinaDLL value.

  • If the test machine is on the network, and %systemroot%\SYSTEM32 is available on a network share for that machine (e.g. \\<name>\c$), rename Gina.dll to something else with a command like:

    ren \<name>\c$\winnt351\system32\gina.dll gina.sdk
    Reboot the test machine.
    
    

  • Delete the GinaDLL value from the registry.

  • If the test machine will dual boot to another version of Windows NT or another operating system capable of accessing %systemroot%\system32, boot to that operating system, delete %systemroot%\system32\Gina.dll, reboot, and delete the GinaDLL value from the registry.

For more information see Gina.hlp.

Building SDK Samples

This sample uses the following keywords:

_vsnprintf; allocandcapturetext; attemptlogon; centerwindow; changepassworddlgproc; checkdlgbutton; closehandle; configdlgproc; copysid; createprocessasuser; debuglog; dllmain; dupstring; enablewindow; enddialog; errormessage; fflush; fopen; formatmessage; fprintf; getcurrentprocessid; getcurrentthreadid; getdebugkeyvalue; getdesktopwindow; getdlgitem; getdlgitemtext; getlasterror; getlengthsid; getlocaltime; getparent; getprocaddress; getprofileint; getprofilestring; getprofilestringa; getsystemmetrics; gettokeninformation; getwindowlong; getwindowrect; handlelvnotify; imagelist_addicon; imagelist_create; impersonateloggedonuser; initcommoncontrols; initdebugsupport; initializeaccountlist; initializeimagelists; initoptionsdialog; isdlgbuttonchecked; listview_getitem; listview_getnextitem; listview_insertcolumn; listview_insertitem; listview_setcolumnwidth; listview_setimagelist; listview_setitemtext; loaddebugparameters; loadicon; loadlibrary; loadminiaccounts; loadnetapi; localalloc; localfree; localrealloc; logevent; logondlginit; logondlgproc; logonuser; makeintresource; makelangid; messagebox; netuserchangepasswordfn; newuserdlgproc; openlogfile; optionsdlgproc; outputdebugstringa; populatelistview; postmessage; regclosekey; regcreatekeyex; regenumvalue; regopenkey; regqueryinfokey; regqueryvalueex; regsetvalueex; reverttoself; saveminiaccount; setdlgitemtext; setfocus; setforegroundwindow; setlasterror; setwindowlong; setwindowpos; setwindowtext; showwindow; shutdowndialoginit; shutdowndlgproc; sprintf; strcmpi; strtok; text; trytochangepassword; updateshutdownsettings; va_start; warning; wcscmp; wcscpy; wcslen; wcstok; welcomedlgproc; wlxactivateusershell; wlxdialogboxparam; wlxdisplaylockednotice; wlxdisplaysasnotice; wlxinitialize; wlxislockok; wlxislogoffok; wlxloggedonsas; wlxloggedoutsas; wlxlogoff; wlxnegotiate; wlxsasnotify; wlxshutdown; wlxusectrlaltdel; wlxwkstalockedsas; zeromemory