Programming

GINA 라는걸 알 기회가 있었다.

콜러스 XXII 2008. 12. 4. 13:52


GINA .. 언듯 들으면 Xena랑 발음이 비슷한거 같기도 하고 .. 암튼 여자 이름 같은 이것이 무언이냐면 ...


Graphical Identification and Authentication 의 줄인말 되겠다. 즉 Window를 첨 키면 나오는 Winlogon


Dialog가 나오는데 이것에 대한 정보를 다루는 라이브러리가 되겠다. 윈도우 로그인 화면에 장난을 치거나


윈도우 세션 Start/Stop, 유저 Logon/Logoff, Display Lock/Unlock (스크린 세이버쪽)시에 원하는 동작을 시


키고 싶을 때 이용하면 되겠다. 사실 gpedit.msc로 스크립트를 등록하는 방법이 있지만 제약이 좀 따른다.


GINA를 이용하면 각 동작별로 상세한 뭔가를 할 수 있다. 다음은 그에 대한 Wiki 사이트이다.


http://en.wikipedia.org/wiki/Graphical_Identification_and_authentication


GINA의 동작 방식은 디바이스 드라이버의 필터 드라이버 비스무리하게 동작이 되며 프로그래밍도


그런 느낌으로 하게 된다. (실제 디바이스 드라이버는 아니다.) C++/C#으로 생각하자면 GINA 프로그래밍


(Stub)은 Override된 함수를 구현 하는 것이다 라고 보면 된다. Default로 Window는 MSGINA.dll을


호출하게 된다.


이것을 바꾸려면 본인이 GINA 스키마에 맞는 DLL 프로그래밍을 해서 Window쪽에 카피해서 Register에 등록


만 하면 나만의 GINA기능을 수행할 수 있다.


Registry는 다음과 같다.


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon


에 GinaDLL 키를 String 데이타로 만들고 데이타는 본인이 만든 DLL이름을 입력하면 된다.


(글고 꼭 Reboot해야 한다.)


다음의 사이트 들은 아주 유용한 정보와 샘플을 담고 있다.


http://www.codeguru.com/cpp/w-p/system/misc/article.php/c5683

http://www.codeproject.com/KB/system/smart-logon.aspx


http://msdn.microsoft.com/en-us/magazine/cc163803.aspx#S9

http://msdn.microsoft.com/en-us/magazine/cc163786.aspx


조금은 트윅이지만 간혹가다가 현업에서 쓰일 수 있을 것이다.


시간이 나면 C++ 프레임 워크로 만들고 싶지만... 시간이 날려나.


다음은 등록 스크립트이다.


================== < Start of RegisterGina.reg > ================================================

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

"GinaDLL"="<본인이 만든 Gina>.dll"

================== < End of RegisterGina.reg > ================================================


* 잘못하면 O/S문제 생길수 있으므로 본인의 책임하에 써보도록 한다.