解决多图形化识别与验证动态链接库冲突的方法和装置制造方法及图纸

技术编号:2917249 阅读:405 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种解决多图形化识别与验证动态链接库GINA DLL冲突的方法,包括:当Windows操作系统启动时,主导GINA DLL由Winlogon系统程序加载和运行,而每个从属GINA DLL由其上一级的主导GINA DLL或从属GINA DLL加载和运行。本发明专利技术该公开了一种解决多GINA DLL冲突的装置。本发明专利技术的技术方案,使得多个GINA DLL能够协同工作而不产生冲突。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤指一种解决多图形化识别与验证动态链接库冲突的方法和装置
技术介绍
窗口(Windows)系列操作系统,如Windows NT、Windows 2000、Windows XP以及Windows 2003等,提供了一个称为msgina.dll的图形化识别与验证(GINA,Graphical Identification and Authentication)动态链接库(DLL,Dynamic Link library)文件。这个称为msgina.dll的GINA动态链接库为用户提供交互式的系统登录界面。Windows操作系统启动时会运行一个名叫窗口登录(Winlogon)的系统程序,这个系统程序会加载GINA DLL并调用其中的相关函数,完成交互式的系统登录操作。图1是现有的Windows2000操作系统自带的GINA DLL提供的交互式系统登录界面图。现有技术除了提供上述称作msgina.dll的GINA DLL以外,还允许软件开发商按照规定的一套规则实现自己定制的GINA DLL。很多应用场景都需要采用定制的GINA DLL,如以下两个应用场景:应用场景一:单点登录应用一个企业的用户登录Windows操作系统时需要正确输入用户名和密码才能通过登录进入Windows操作系统。如果该企业应用了某网络接入软件,即需要用户完成网络接入的身份认证才能允许访问网络,用户需要再次输入用户名和密码等信息。如果两次输入的使用的是同一套用户名密码信息,则企业用户自然会提出单点登录的需求,即登录Windows时输入一次用户名密码信息后即能登录进入Windows操作系统,又能接入网络。网络接入软-->件提供开发商的定制GINA DLL库可以满足这个需求,即登录Windows时定制GINA DLL获取到用户输入的用户名密码等信息,用这些信息先去做网络接入认证的操作,随后再去做登录Windows的操作。应用场景二:USB智能卡与Windows登录整合应用这种应用需要用户在计算机上安装USB智能卡以及相关的驱动程序,智能卡中存有个人身份号码(PIN,Personal Identification Number),用户要登录Windows,除了正确输入用户名和密码信息之外,还必须正确输入PIN码。用户临时要离开时只需拔除智能卡,计算机自动锁定;只有再次插入智能卡输入正确PIN码才能再次进入系统继续使用。这种应用同样需要定制GINA DLL来实现。尽管现有技术为软件开发商提供了GINA DLL定制机制,但这个机制存在一个局限性,使得只能有一个厂商的GINA DLL被系统程序winlogon加载。一个厂商要使得自己定制的GINA DLL起作用,需要把自己定制的GINA DLL名称记录到注册表的指定位置,该指定位置为:HKEY_LOCALMACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon下的“GinaDLL”属性,例如,将定制的ABC_GinaHook.dll保存到注册表的指定位置,即为将HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon下设的“GinaDLL”属性的值设置为ABC_GinaHook.dll。当两个厂商定制的GINA DLL都希望在同一台计算机上生效时,问题就暴露出来了:后安装的GINA DLL生效会导致先安装的GINA DLL失效。这就是多个GINA DLL的冲突。但是现有技术并没有如何解决多个GINADLL冲突的方案。
技术实现思路
本专利技术提供了一种解决多GINA DLL冲突的方法,该方法使得多个GINA DLL能够协同工作。-->本专利技术还提供了一种解决多GINA DLL冲突的装置,该装置使得多个GINA DLL能够协同工作。为达到上述目的,本专利技术的技术方案具体是这样实现的:本专利技术公开了一种解决多图形化识别与验证动态链接库GINA DLL冲突的方法,该方法包括:当窗口Windows操作系统启动时,窗口登录Winlogon系统程序根据注册表指定位置下保存的主导GINA DLL的名称加载该主导GINA DLL,调用该主导GINA DLL中的指定接口,由该指定接口获取主导GINA DLL的外部接口参数,并用该获取的外部接口参数调用主导GINA DLL的外部接口;所述主导GINA DLL的外部接口实现该主导GINA DLL自身的业务逻辑,并根据预设的GINA链表查找到主导GINADLL的下一级从属GINA DLL的名称,从该GINA链表中获取该下一级从属GINA DLL的外部接口参数,加载该下一级从属GINA DLL,用所述下一级从属GINADLL的外部接口参数调用下一级从属GINA DLL的外部接口;对于每一个当前从属GINA DLL,该当前从属GINA DLL的外部接口被上一级GINA DLL调用时,当前从属GINA DLL的外部接口实现本从属GINA DLL自身的业务逻辑,并根据所述GINA链表判断本从属GINA DLL是否存在再下一级GINA DLL;如果存在,则从该GINA链表中获取该再下一级从属GINA DLL的外部接口参数,加载该再下一级从属GINA DLL,用所述再下一级从属GINA DLL的外部接口参数调用该再下一级从属GINADLL的外部接口;如果不存在,则结束。本专利技术还提供了一种解决多GINA DLL冲突的装置,该装置包括:Winlogon系统程序模块、属于主导GINA DLL的主导GINA DLL指定接口模块和主导GINA DLL外部接口模块、一个以上的属于不同从属GINA DLL的从属GINA DLL外部接口模块和GINA链表存储模块,其中,所述Winlogon系统程序模块,当Windows操作系统启动时,用于根据注册表指定位置下保存的主导GINA DLL的名称加载该主导GINA DLL,调-->用该主导GINA DLL中的主导GINA DLL指定接口模块;所述主导GINA DLL指定接口模块,用于获取主导GINA DLL的外部接口参数,并用该获取的外部接口参数调用主导GINA DLL外部接口模块;所述主导GINA DLL外部接口模块,用于实现主导GINA DLL自身的业务逻辑,并根据GINA链表查找到主导GINADLL的下一级从属GINA DLL的名称,从该GINA链表中获取该下一级从属GINA DLL的外部接口参数,加载该下一级从属GINA DLL,用所述下一级从属GINA DLL的外部接口参数调用下一级从属GINA DLL外部接口模块;每一个从属GINA DLL外部接口模块,用在被上一级GINA DLL外部接口模块调用时,实现本从属GINA DLL自身的业务逻辑,并根据所述GINA链表判断本从属GINA DLL是否存在再下一级GINA DLL;如果存在,则从该GINA链表中获取该再下一级从属GINA DLL的外部接口参数,加载该再下一级从属GINA DLL,用所述再下一级从属GINA DLL的外部接口参数调用该再下一级从属GINA DLL外部接口模块;如果不存在,则结束。本文档来自技高网
...

【技术保护点】
一种解决多图形化识别与验证动态链接库GINA DLL冲突的方法,其特征在于,该方法包括: 当窗口Windows操作系统启动时,窗口登录Winlogon系统程序根据注册表指定位置下保存的主导GINA DLL的名称加载该主导GINA DLL,调用该主导GINA DLL中的指定接口,由该指定接口获取主导GINA DLL的外部接口参数,并用该获取的外部接口参数调用主导GINA DLL的外部接口; 所述主导GINA DLL的外部接口实现该主导GINA DLL自身的业务逻辑,并根据预设的GINA链表查找到主导GINA DLL的下一级从属GINA DLL的名称,从该GINA链表中获取该下一级从属GINA DLL的外部接口参数,加载该下一级从属GINA DLL,用所述下一级从属GINA DLL的外部接口参数调用下一级从属GINA DLL的外部接口; 对于每一个当前从属GINA DLL,该当前从属GINA DLL的外部接口被上一级GINA DLL调用时,当前从属GINA DLL的外部接口实现本从属GINA DLL自身的业务逻辑,并根据所述GINA链表判断本从属GINA DLL是否存在再下一级GINA DLL;如果存在,则从该GINA链表中获取该再下一级从属GINA DLL的外部接口参数,加载该再下一级从属GINA DLL,用所述再下一级从属GINA DLL的外部接口参数调用该再下一级从属GINA DLL的外部接口;如果不存在,则结束。...

【技术特征摘要】
1、一种解决多图形化识别与验证动态链接库GINA DLL冲突的方法,其特征在于,该方法包括:当窗口Windows操作系统启动时,窗口登录Winlogon系统程序根据注册表指定位置下保存的主导GINA DLL的名称加载该主导GINA DLL,调用该主导GINA DLL中的指定接口,由该指定接口获取主导GINA DLL的外部接口参数,并用该获取的外部接口参数调用主导GINA DLL的外部接口;所述主导GINA DLL的外部接口实现该主导GINA DLL自身的业务逻辑,并根据预设的GINA链表查找到主导GINA DLL的下一级从属GINA DLL的名称,从该GINA链表中获取该下一级从属GINA DLL的外部接口参数,加载该下一级从属GINA DLL,用所述下一级从属GINA DLL的外部接口参数调用下一级从属GINA DLL的外部接口;对于每一个当前从属GINA DLL,该当前从属GINA DLL的外部接口被上一级GINA DLL调用时,当前从属GINA DLL的外部接口实现本从属GINA DLL自身的业务逻辑,并根据所述GINA链表判断本从属GINA DLL是否存在再下一级GINA DLL;如果存在,则从该GINA链表中获取该再下一级从属GINA DLL的外部接口参数,加载该再下一级从属GINA DLL,用所述再下一级从属GINA DLL的外部接口参数调用该再下一级从属GINADLL的外部接口;如果不存在,则结束。2、如权利要求1所述的方法,其特征在于,该方法在所有步骤之前进一步包括:安装主导GINA DLL和一个以上的从属GINA DLL,以使得在注册表的指定位置下保存主导GINA DLL的名称,在GINA链表中保存主导GINADLL和一个以上的从属GINA DLL之间的链式关系信息;所述链式关系信息包括:主导GINA DLL的名称、每个从属GINA DLL的名称、每个从属GINA DLL的外部接口参数集合、每个从属GINA DLL的外部接口名称,以及各GINA DLL之间的链式上下级关系。3、如权利要求2所述的方法,其特征在于,所述安装主导GINA DLL和一个以上的从属GINA DLL包括:当不存在主导GINA DLL时,对于第一个要进行安装的第一GINA DLL,将第一GINA DLL的名称保存到注册表的指定位置下,并将第一GINA DLL的名称标识为主导GINA DLL保存到GINA链表中;对于第二个要进行安装的第二GINADLL,当第一GINA DLL所能支持的输入参数集合包含第二GINA DLL的外部接口参数集合时,将第二GINADLL的名称保存到GINA链表中,并在GINA链表中将第二GINA DLL的名称标识为所述第一GINA DLL的下一级从属GINA DLL,还在GINA链表中与第二GINA DLL的名称对应保存第二GINA DLL的外部接口参数集合与外部接口名称;反之,当第二GINA DLL所能支持的输入参数集合包含第一GINA DLL的外部接口参数集合时,则用第二GINA DLL的名称替换注册表的指定位置下的第一GINA DLL的名称,将第二GINA DLL的名称标识为主导GINA DLL保存到GINA链表中,而将第一GINA DLL的名称标识为第二GINA DLL的下一级从属GINA DLL,并与第一GINA DLL的名称对应保存第一GINA DLL的外部接口参数集合与外部接口名称;之后,对于每一个要进行安装的当前GIN ADLL,将该当前GINA DLL插入到GINA链表中的GINA DLL链中的指定位置,并满足如下条件:当前GINA DLL的上一级GINA DLL所能支持的输入参数集合包含当前GINADLL的外部接口参数集合,当前GINA DLL多能支持的输入参数集合包含当前GINA DLL的下一级GINA DLL的外部接口参数集合。4、如权利要求3所述的方法,其特征在于,该方法进一步包括:对于GINA链表中的GINA DLL链中的任一个要进行卸载的当前GINA DLL,如果当前GINA DLL同时存在上一级GINA DLL和下一级GINA DLL,则让当前GINA DLL的上一级GINA DLL直接指向当前GINA DLL的下一级GINA DLL;如果当前GINA DLL存在上一级GINA DLL,但不存在下一级GINADLL,则将当前GINA DLL的上一级GINA DLL置为链尾;如果当前GINA DLL存在下一级GINA DLL,但不存在上一级GINADLL,则将当前GINA DLL的下一级GINA DLL置为主导GINA DLL;从GINA链表中删除当前GINA DLL的全部信息。5、如权利要求3或4所述的方法,其特征在于,该方法进一步包括:在所述GINA链表中与每个GINA DLL的名称对应保存该GINA DLL所能支持的输入参数的集合。6、如权利要求3或4所述的方法,其特征在于,在所述安装主导GINA DLL和一个以上的从属GINA DLL的过程中,所述主导GINA DLL和一个以上的从属GINA DLL都被保存到了指定目录下;所述加载GINA DLL是从所述指定目录下获取要加载的GINA DLL并进行加载;或者,在所述安装主导GINA DLL和一个以上的从属GINA DLL的过程中,所述主导GINA DLL和一个以上的从属GINA DLL被保存到了不同的目录下;在所述GINA链表中与每个GINA DLL的名称对应保存该GINADLL被保存的目录信息;所述加载GINA DLL是从GINA链表获取要加载的GINADLL被保存的目录信息,进而获取要加载GINA DLL并进行加载。7、一种解决多GINA DLL冲突的装置,其特征在于,该装置包括:Winlogon系统程序模块、属于主导GINA DLL的主导GINA DLL指定接口...

【专利技术属性】
技术研发人员:卢志坚刘恒胜
申请(专利权)人:杭州华三通信技术有限公司
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1