我在做毕业设计的时候遇到一个难题
就是要在windows2000/xp登录窗口显示之前运行我的应用程序,比如跳出一个窗口,要求输入一些文字什么的,点击确定后才能再对系统登录窗口进行操作,这个应该如何解决?
请大家帮帮忙喏??
痛苦中
我的E-mail & msn:[email protected]
渴望交流。

解决方案 »

  1.   

    将你的主代码嵌入WINLOG。EXE文件中去哦!
      

  2.   

    您说的是不是可以注册成系统服务来实现?但是如果没弹出窗口我的程序就没意义了,我的项目是这样的,就是说,现在学校有机房的管理有个机制,就是去上课的老师要用电脑前要对使用的电脑做一个笔记,目前是记在笔记本上,我的毕业设计就是要把这项目工作实现在电脑上,通用开机在系统登录前强制运行一个机器使用注册程序,注册和才能正能使用这台电脑,这个注册程序的主要功能就是有有个下拉列表,比如:当前时间,当前状况(可用,故障等等),等等,点击确定和发送到机房管理中心的服务端。
    别的都好实现,就是开机拦截是难点,以前有有师哥做过类似东西,是在登录以后运行的,程序注册了所有系统热键,模拟一个不点确定不能进一步使用机器的情况,但是没有真正解决这个问题。根据lxtnt的提示,我昨天看到一种hook到winlog的方法,但是不会用,难度很大啊,也不知道这种方法能不能显示出我的窗体。
      

  3.   

    xixuemao您好,我的导师的意思是希望在登录窗口之前对启动进程进行强制拦截,这一步似乎很困难,我也想过在登录以后,但是登录以后有许多不便就是程序的进程可能被用户关闭或者删除卸载,对于这个问题,您当时是怎么做,能否指点一二。
    对于刚启动时,防止用户关闭,可以注册所有热键等其它方法,如果程序启动完毕,怎样防止用户对程序进行删除?有没有稍微强悍隐蔽一点的方法。
      

  4.   

    首先,form的显示方式设成hide;然后可在form的onshow()事件中设置你要弹出的窗口,以及条件判断,正确则form.show
      

  5.   

    对于刚启动时,防止用户关闭,可以注册所有热键等其它方法,如果程序启动完毕,怎样防止用户对程序进行删除?有没有稍微强悍隐蔽一点的方法。
    ==========================================
    你说的这个的确是个问题
    刚启动时可以通过Hook以及线程注入的方式钩掉所有的系统热键,这个是可以实现的。
    启动完毕后可以隐藏进程,或者注入到系统进程中防止用户结束进程,但如果用户直接删除程序目录或文件这个当时还真没考虑过,因为学校机房电脑都有保护卡的,不过应该也有办法实现。
    但这整个流程下来的确比较复杂,呵呵。!
      

  6.   

    http://www.rootkit.com也许能找到..
      

  7.   

    服务程序也是在winlogon.exe后面加载的
    在winlogon.exe运行之前,用"正常"的办法是很难运行线程的,
    更别提显示对话框了看看这篇帖子
    http://bbs.zndev.com/read.php?tid=46767
      

  8.   

    可以参考一下StyleXP这个程序,
    还有,好像WINLOGON留有编程接口,你找相关资料看看,给你一个参考:
    http://www.vckbase.com/document/viewdoc/?id=242
      

  9.   

    winlogon.exe执行的时候,会先执行Service.exe,由Service.exe去启动服务,
    因为winlogon.exe并不等待Service.exe,
    所以很难说到底是服务程序先运行还是登录窗口先出现关于windows的启动顺序,下面两篇文章说的很清楚
    http://blog.csdn.net/bigwhite20xx/archive/2002/07/22/17516.aspx
    http://dev.csdn.net/article/13/13971.shtm
      

  10.   

    看了网上一篇windows2000启动详细说明,说在那个时间,系统有3个桌面,又看了楼上sdzeng(大头鸟) 朋友的帖子,里面也有提到"桌面"这个词,我在想是不是可以把应用程序设置到winlog.exe进程所在的桌面,但是找不到详细资料。
      

  11.   

    xixuemao您好,我的项目如果不是因为这个问题,其实比您当时做的简单多了,因为我的应该程序发送完毕机器当前状况后这个进程就可以关闭了,因为这个系统别的没什么难度,关键点这个东西又太难,如果用别的方法实现我怕毕业设计得不了高分,看来只能从算法上下功夫了,现在正在考虑一个状况就是如果某台机器在断网状态,不能发送机器状态的数据到服务端,那服务端就不能统计这台机器的好坏,这样整个项目又达不到要求,想知道您当时这个项目是否能提供这个解决方法
      

  12.   

    记得:
      在98下可以安装目录下如:C:\EXPLORER.EXE,系统将自动执行。或用CREATEKERNEL(有这个未公开函数)
      NT以上的,
      1、在注册表有一个\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon (记得不是很清,但一定有因为以前我试过哦)
      2、注册一个服务进程(当然是滞缓啦)
      3、启用另一个桌面,而隐藏第一个DESKTOP。
      4、替代掉原先的winlogon。EXE(用个打包程序就好了,但只限于手动吧)
      我也想直接用HOOK嵌入进去啊,可WINLOGON却在运行时不发出任何消息!晕
      

  13.   

    调用Windows的syskey.exe不就得了!
      

  14.   

    如果不是安全模式的话,可以自己写一个GINA代替windows的登录对话窗口,安全模式下这种做法是无效的,我也在找安全模式下windows登录对话窗口出现前就运行我的程序的方法
      

  15.   

    GINA Hook WndProc就能实现出一个窗口,要求输入一些文字什么的,点击确定后才能再对系统登录窗口进行操作或者编写native application,在系统尚未启动时就执行了
    磁盘检查就是这样的程序
    只能连接NTDLL的
    需要用NTDDK开发,目前只有C能实现
      

  16.   

    最好的办法是在系统自带的DLL文件加入你自己的代码!
    随系统生而生随系统亡而不死。