`
wezly
  • 浏览: 484492 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Gina的应用

阅读更多

想不想拥有自己个性化的WIN2000登陆界面呢?本文就教你如何实现。

 

你可以通过编程替换掉微软的MSGINA.DLL,用来实现自己的密码登陆验证功能,如图,我就加入了两个密码验证的功能。

一、原理
在NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。WinLogon会和GINA DLL进行交互,缺省是MSGINA.DLL(在System32目录下)。微软同时也为我们提供了接口,我们可以自己编写GINA DLL来代替MSGINA.DLL。

WinLogon初始化时会创建3个桌面:
(1)、winlogon桌面:主要显示Windows 安全等界面,如你按下CTRL+ALT+DEL,登陆的界面等
(2)、应用程序桌面:我们平时见到的那个有我的电脑的界面
(3)、屏幕保护桌面:屏幕保护显示界面。

在默认情况下,GINA显示登陆对话框,用户输入用户名及密码 。所以要获得用户名和密码 ,则可以写一个新的GINA DLL,其中提供接口调用msgina.dll的函数WlxLoggedOutSAS。

二、程序实现
GINA DLL要输出下列函数(winlogon会调用):

(表一)GINA 函数一览表

 

函数  描述
WlxActivateUserShell 激活用户外壳程序
WlxDisplayLockedNotice 允许GINA DLL 显示锁定信息
WlxDisplaySASNotice  当没有用户登陆时,Winlogon调用此函数
WlxDisplayStatusMessage Winlogon 用一个状态信息调用此函数进行显示
WlxGetConsoleSwitchCredentials  Winlogon调用此函数读取当前登陆用户的信任信息,并透明地将它们传到目标会话
WlxGetStatusMessage  Winlogon 调用此函数获取当前状态信息
WlxInitialize  针对指定的窗口位置进行GINA DLL初始化
WlxIsLockOk  验证工作站正常锁定
WlxIslogoffOk  验证注销正常
WlxLoggedOnSAS  用户已登陆并且工作站没有被加锁,如果此时接收到SAS事件,则Winlogon 调用此函数
WlxLoggedOutSAS  没有用户登陆,如果此时收到SAS事件,则Winlogon 调用此函数, This indicates that a logon attempt should be made 。
WlxLogoff  请求注销操作时通知GINA DLL 
WlxNegotiate  表示当前的Winlogon版本是否能使用GINA DLL
WlxNetworkProviderLoad  在加载网络服务提供程序收集了身份和认证信息后,Winlogon 调用此函数
WlxRemoveStatusMessage  Winlogon 调用此函数告诉GINA DLL 停止显示状态信息
WlxScreensaverNotify  允许GINA与屏幕保护操作交互
WlxShutdown  在关闭之前Winlogon 调用此函数,允许GINA实现任何关闭任务,例如从读卡器中退出智能卡
WlxStartApplication  当系统需要在用户的上下文中启动应用程序时调用此函数
WlxWkstaLockedSAS 当工作站被锁定,如果接收到一个SAS,则Winlogon 调用此函数

为了简化编程,我们从MSGINA.DLL中动态获取上述函数,在自定义的DLL中(以下称为MyGina.DLL)中直接调用MSGINA.DLL的函数即可。现在我们要处理的就是WlxLoggedOutSAS函数:

int WINAPI WlxLoggedOutSAS(PVOID                pWlxContext,
         DWORD                dwSasType,
         PLUID                pAuthenticationId,
         PSID                 pLogonSid,
         PDWORD               pdwOptions,
         PHANDLE              phToken,
         PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,
         PVOID *              pProfile)
{
//=========================加入我的登陆=========================
  


   Clogin login;
 if (login.DoModal()==IDCANCEL)
 {
   return WLX_SAS_ACTION_NONE;
 }
 if(login.bCLOSE==TRUE)
 {
  return WLX_SAS_ACTION_SHUTDOWN;
 }
 if(login.DoModal()==IDOK)
 {

  char UserName[40];
  char PassWord[40];
  char PassWord2[40];
  
  strcpy(UserName,theApp.MyUser);
  strcpy(PassWord,theApp.MyPass);

 //在这里,我为了简便,直接在程序里面比较密码,并且把默认管理员帐号设置为自动登陆

//自动登陆函数SetAutoLogon
        strcpy(PassWord2,theApp.MyPass2);
 //  AfxMessageBox(UserName);
 //  AfxMessageBox(PassWord);  
  if(!strcmp(UserName,"Administrator"))
   if(!strcmp(PassWord,"123"))
    if(!strcmp(PassWord2,"456"))
    {
     SetAutoLogon("administrator","","123");
     return theApp.MyWlxLoggedOutSAS(pWlxContext,dwSasType,pAuthenticationId,
   pLogonSid,pdwOptions,phToken,pMprNotifyInfo,pProfile);
    }


 }
 AfxMessageBox("密码或者用户名错误!不能登陆!");
 return WLX_SAS_ACTION_NONE;

}

然后设计登陆框,实现自己的界面,具体实现就不再详细说明了,可以参考代码。

三、安装和注意事项:

在编写GIAN DLL中要注意,GINA DLL使用的是unicode。

【安装】GINA DLL的安装:
1. 添加注册表
键名 : \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
变量名 : GinaDLL
变量类型 : [REG_SZ]
内容 : "你的GINA DLL的名称" 如:"MyGina.DLL:

2. 将你的GINA DLL(MyGina.dll)拷贝到系统目录下(system32);

3. 重启机器,你的GINA DLL(MyGina.dll)就会运行。

【注意】
1. 如果出现进不了你的系统,那你进入DOS后,将msgina.dll拷贝成你的GINA DLL(MyGina.dll)就可进入了;或者进入安全模式,删除掉那个键值( GinaDLL )。

2. Console 程序如果想使用MFC类,必须包含<afx.h>,同时注释掉<windows.h>。

3. 如果出现这种错误:“LINK : fatal error LNK1104: cannot open file "mfc42u.lib" ”,那么说明 lib路径的设置问题,你的链接器在指定的目录下没有找到这个的文件,你应该添加新的目录以便编译器找到所需的库文件。具体位置:IDE中 菜单Tools\Options\Directories\show directories for\ <library files>。

4. 如果出现这种错误:“uafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in main.obj ”或者“mfcs42ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in main.obj ”,那么“See if you have _AFXDLL and _USRDLL in the preprocessor definitions. Try removing one of them”。具体位置:IDE中 菜单Project \ Setting \ C/C++ \ preprocessor definition 。

分享到:
评论

相关推荐

    GINA1.zip_gina_zip

    标题中的"GINA1.zip_gina_zip"表明这是一个与GINA(Graphical Identification and Authentication)相关的压缩文件,可能包含一个...对于IT专业人士,理解和应用这些知识点有助于构建更加安全和定制化的登录环境。

    GINA之windows登录控制替换

    * WlxStartApplication:当系统需要在用户的上下文中启动应用程序时调用此函数 * WlxWkstaLockedSAS:当工作站被锁定,如果接收到一个SAS,则Winlogon调用此函数 为了简化编程,我们可以从MSGINA.DLL中动态获取上述...

    能正常应用的Gina集合

    测试了很多人写的gina,发现只有这两个gina源代码可以在xp下用.注意请按安装方法使用. cooldoggina的界面做的很不错,内容很多. ginastub及其精简,就几个必须的接口函数,一点多余功能都没有. 可以在vc6.0下编译通过....

    修改GINA,自己实现Windows登陆过程

    2. **兼容性**:自定义GINA可能会影响与其他系统的兼容性,特别是当涉及到旧版Windows或特定的应用程序时。测试在各种环境中运行的性能和稳定性至关重要。 ### 文件`ginafull`分析 由于没有提供具体的`ginafull`...

    full gina 完整Sample

    四、应用与安全性 虽然现代Windows系统倾向于使用Credential Providers,但Gina的概念仍然有价值,特别是对于需要在旧版Windows系统上实施特殊认证策略的情况。自定义Gina可以增强系统的安全性,例如,集成多因素...

    xp Gina 示例

    在提供的压缩包文件"GINA"中,可能包含了一个示例的自定义Gina DLL以及相关文档或说明,用于指导开发者如何创建和应用自定义Gina。这些资源可能包括源代码、编译后的DLL、示例配置、使用教程等,帮助理解Gina的工作...

    替换GINA_DLL实现自己的登陆界面

    描述中提到的“加入了两个密码验证的功能”,意味着开发人员可能创建了一个新的DLL文件,该文件包含两种不同的验证方式,可能是为了提高安全性或满足特定应用场景的需求。这可能包括如双因素认证、硬件令牌验证或...

    gina.sample.zip_full_gina_gina source code

    本篇文章将深入探讨MS GINA及其附带的完整源代码样本——gina.sample.zip_full_gina_gina_source_code,帮助读者理解其工作原理和可能的应用场景。 首先,让我们了解什么是GINA。GINA,全称为Graphical ...

    dog gina修改XP系统登录logo

    5. **应用更改**:在"cooldoggina"中应用新logo,程序会自动处理替换系统中的Gina组件。 6. **重启系统**:为了使更改生效,需要重启你的计算机。登录时,你应该能看到新的登录logo。 7. **测试与检查**:确认修改...

    GINA在儿科科学应用.ppt

    在儿科应用中,GINA涵盖了哮喘的定义、描述、诊断、评估和治疗,特别强调了儿童哮喘的识别。对于6岁及以上的孩子,诊断依据包括多变的呼吸系统症状史、支气管扩张剂的可逆性试验、肺功能测试(如PEF检测)以及过敏原...

    ADSelfServicePlus应用场景-Gina (1).mp4

    ADSelfServicePlus应用场景-Gina

    GINA--在儿科科学应用.ppt

    GINA,全称为全球哮喘倡议...综上所述,GINA在儿科科学中的应用是一个全面的、动态的过程,涵盖哮喘的定义、诊断、管理和预防,旨在确保每个哮喘患者都能得到恰当的、个性化的治疗,以改善他们的生活质量并减少并发症。

    gina 完全替换msgina

    同时,也需要了解替换Gina可能带来的潜在风险,比如可能导致某些应用或服务无法正常运行,或者与某些硬件或软件组件不兼容。 总的来说,"gina 完全替换msgina"是一种高级的系统定制行为,适用于对系统安全有特殊...

    RPI.rar_gina delphi

    Delphi是一款强大的面向对象的Pascal编程环境,它为开发者提供了丰富的工具和库来构建桌面应用程序。 标题“RPI.rar_gina delphi”暗示了这是一个关于使用Delphi开发Gina相关组件或模块的资源包。这个压缩文件可能...

    《My name is Gina 》教案.pdf

    《My Name Is Gina》教案是针对七年级英语教学的一个单元,该单元主要集中在学习和复习数字,特别是从0到9的英文表达。本教案详细规划了教学内容、目标、学习者特征、教学策略、教学重点与难点,以及教学过程。 一...

    日历登录管理器1.0.0, GINA

    日历登录管理器通过自定义GINA模块,实现了对登录界面的个性化改造,允许用户在登录过程中直接查看和操作日历,而无需切换到其他应用。 此登录管理器的特色在于其用户友好的界面设计。它将日历直观地显示在登录窗口...

    WINDOWS XP以下登錄

    3. **示例应用**:例如,如果你有一个企业内部的单点登录(SSO)系统,可以创建一个自定义的GINA模块,使得用户只需输入一次凭证就可以访问所有系统资源。 在提供的压缩包文件中,可能包含了一些关于如何使用DELPHI...

    远程注销gina

    ### 远程注销Gina知识点解析 #### 一、Gina概述 "Gina"是“Graphical Identification and Authentication”的缩写,在Windows系统中主要用于处理用户的登录、注销等身份验证过程。Gina模块作为Windows安全子系统的...

    Configuración de página_excel_

    标题中的"Configuración de página_excel_"指的是在Excel中对工作表页面的设置,这通常涉及到打印设置、页面布局和样式调整。在这个话题中,我们将深入探讨如何通过使用宏(Macros)来自动化这些配置过程。 Excel...

    gina:Gina网页SebastianVGG

    此外,HTML5引入了许多新元素,如`&lt;canvas&gt;`用于图形绘制,`&lt;audio&gt;`和`&lt;video&gt;`用于多媒体播放,这些都可能在这个项目中有所应用。 项目中可能还涵盖了CSS(Cascading Style Sheets)来控制页面的样式和布局,以及...

Global site tag (gtag.js) - Google Analytics