我要做一个xp的登录对话框,就是在windows登陆时,会出现一个用户名和密码输入的对话框。我想自己设计一种简单的动态验证机制,来替换原来xp的验证机制。不知道应该如何入手?语言可以是vc,e,c#,可以通过调用api,也可以通过修改原有文件。
不要用自动登录机制,那个在进入系统后可以改掉,进入系统前可以用shift屏蔽,很不可靠。
我的想法是:修改logonui.exe,令logonui.exe先调用我的算法,然后再调用原本的算法。可惜logonui.exe不开源,我也不知道如何改。另一个办法是直接完全编写和logonui.exe有相同功能的程序,调用api实现验证,这个没有入手点。
哪位大侠可以就上面2种方法提出意见,或者有更好的办法也可。

解决方案 »

  1.   

    用反编译工具打开logonui.exe,里面有一段html代码,你可以挑你喜欢的看.不过,万一改错了,你可能就进不了系统了.
      

  2.   

    管理员请将上楼删掉,fff我打错了。我没有删除权限。这个问题很困难吗?
    其实这个东西很有实用性。比如网吧的账号输入。就是我们普通的xp密码输入,有的时候还怕别人看到记住。如果有个只有自己知道的算法,让密码随着时间变,就不需要这么害怕了。如果程序能做出来,我一定给大家共享经验。看到我的帖子的,感觉这个问题有必要的,但却不会回答的,帮我顶下。qqq我想帮ms改进系统,可是他竟然不开源,上火。
      

  3.   

    可以自己写GINA,一些用智能卡登录的系统就这么干的。
      

  4.   


    如果是Vista/Win7,那么你可以搜索"Credential Provider"关键词。
      

  5.   

    今天已经试了下写gina.dll。后果很严重。
    那个gina.dll有一个功能是记录登陆名和密码在c:\login.log里面。 我也在注册表里添加了gina.dll项。
    后来出现问题
    1,登陆后,出现提示 一个问题阻止windows正确检查此机器的许可证,错误代码:0x80070002
       我的xp是deepin的精简版,完整版装不起(我的是小霸王机)。不知道问题出在xp上,还是处在gina上。
    2.登陆后首先出现问题1,然后自动注销,约30s后,出现Winlogon崩溃的提示,内存不能读。替换gina.dll为原版后,问题依旧。可安全进入安全模式,删除注册表项,问题1还存在,但Winlogon不再崩溃。高手请给分析各原因。gina.dll是个入手的途径,还需要继续努力。
      

  6.   

    Vista/Win7先不搞,等他们稳定了再说。
    并且,我的机器跑xp稍微费力,连杀毒软件都不能装。
      

  7.   

    进度:
    发现gina可以实现我需要的功能.
    csdn里有2个能用的例程,一个是cooldoggina 和ginastub.整理下:
    http://download.csdn.net/source/1638389
    这两个进过我验证,都可以正常应用.
    现在正在改cooldoggina,相信要实现只是时间问题.不过有新问题:
    三、安装和注意事项:在编写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)就会运行。按上面安装方法安装后,xp自动将图形化的登录和注销界面去掉了,那么原来的 win键+u+u的快速关机就没法使用了,很头疼,不知道有什么方法解决.xp自动将图形化的登录和注销界面去掉的原因是注册表中多了GinaDLL项.我想这样:
    1 将msgina.dll改名为gina.dll;将mygina.dll的动态链接全指向gina.dll
    2 dos下将mygina.dll替换msgina.dll
    这样完成后,发现登录错误.用vc6的dll查看器比较mygina.dll和msgain.dll,发现msgina.dll中有20+个只有入口没有函数明的调用接口.可能是我的mygina.dll没有包含使登录错误.对ms,我无语...
    请大家分析下有其他的原因或解决方法没有.
      

  8.   

    上楼删去,不能编辑,真麻烦.
    进度:
    发现gina可以实现我需要的功能.
    csdn里有2个能用的例程,一个是cooldoggina 和ginastub.整理下:
    http://download.csdn.net/source/1638389
    这两个进过我验证,都可以正常应用.
    现在正在改cooldoggina,相信要实现只是时间问题.不过有新问题:
    三、安装和注意事项:在编写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)就会运行。按上面安装方法安装后,xp自动将图形化的登录和注销界面去掉了,但是原来的 win键+u+u的快速关机就没法使用了,很头疼,不知道有什么方法解决.xp自动将图形化的登录和注销界面去掉的原因是注册表中多了GinaDLL项.我想这样:
    1 将msgina.dll改名为gina.dll;将mygina.dll的动态链接全指向gina.dll
    2 dos下将mygina.dll替换msgina.dll
    这样就不用在注册表写东西了.
    这样完成后,发现登录错误.用vc6的dll查看器比较mygina.dll和msgain.dll,发现msgina.dll中有20+个只有入口没有函数明的调用接口.可能是我的mygina.dll没有包含使登录错误.对ms,我无语...
    请大家分析下有其他的原因或解决方法没有.
      

  9.   

    晕呀,程序我都编完了,还是没人回答,我无语了。
    不过还有几个问题:
    1.无法重启。在正常状态下用个几个重启命令,在登陆验证中无法使用,好像是因为用户没有登录,程序没有重启权限。cooldog用了一个postquitmessage实现了关机,但他也没有实现重启,并且在postquitmessage和wm_quit附近也没有重启相关的内容。
    2在未安装gina时,按win,U,U会关机,很爽。但安装了Gina后弹出的对话框并没有给关机设定快捷键,这个弹出的对话框还需要自己写,我的问题是vc不熟,gina代码中哪里调用弹出的对话框。
      

  10.   

    还有一个问题,
    cooldog的程序,在你点击登陆后,窗口会先刷新一次,并没有其他任何动作。再点击下,程序才响应登陆按钮的按下。谁能稍微看下代码,没有的可以到csdn下,那有我打包的cooldog的源代码。这个问题不大,却很烦人。
      

  11.   

    晕了,还是没有人说话问题都被我自己解决完了,还剩一大一小2个问题:
    1.在未安装gina时,按win,U,U会关机,很爽。但安装了Gina后弹出的对话框并没有给关机设定快捷键,这个弹出的对话框还需要自己写,我的问题是vc不熟,gina代码中哪里调用弹出的对话框。
    2.cooldog的对话框有问题。每次按按钮,按第一次,窗口只刷新,没任何反应,按第二次才有登陆验证。懂vc编程的麻烦给看看cooldog的代码。http://download.csdn.net/source/1638389 
    已解决:无法重启。
    跳到wlx_***_ACTION_NOACTION的定义处,附近能找到wlx_***_ACTION_SHUTDOWN,wlx_***_ACTION_SHUTDOWN_REBOOT
    直接在WlxLoggedOutSAS ()里返回这两个,就行了。