大虾们,如何在windows启动时,控制windows外壳的加载?

解决方案 »

  1.   

    不太情况,使用HOOK应该可以吧。
      

  2.   

    Hook不可以hook kernel32.dll。
    下面文章来源:
    lu0.126.comHOOK并不是万能的.而且,这里有个很好的例子就是整个OS启动中第一个被启动的WIN32进程:KERNEL32.DLL.大家很奇怪,KERNEL32.DLL是个DLL,怎么也会被作为进程加载?但是事实的确是这样的,顺便给大家再上一节98启动课吧.KERNEL32.DLL作为一个独立的进程,启动时加载了MSGSRV32.EXE.而MSGSRV32.EXE又启动了SPOOL32.EXE, SPOOL32.EXE启动了MPREXE.EXE.MPREXE.EXE可不能小看.我敢担保全中国没几个人真正知道它的作用的.MPREXE.EXE不仅是网络客户端部件启动的核心,更是WIN98的SERVICE的SCM.所有的WIN98的SERVICE都是由MPREXE.EXE启动的.WIN98的SERVICE都在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices里呆者哩.大家都傻眼了吧.:DDD 有一点很令人奇怪, 那就是如果MPREXE.EXE运作不正常,那么SHELL绝对起不来.SHELL却是有MSGSRV32.EXE启动的.看来MPREXE和MSGSRV32有一套内部沟通机制啊.有了SHELL,就什么都有了.其他的东西被SHELL启动就难说准了.反正80%的程序是由SHELL启动的.好了,WIN98启动暂且讲到这里.我们继续原先的话题.KERNEL32.DLL居然就无法用HOOK入侵.大家如果不信的话,就试试看吧. 
      

  3.   

    把system.ini->boot->shell=Explorer.exe改成你的程序就可以,反正自己做个简单的shell是很容易的
    比如改成:system.ini->boot->shell=taskman.exe
    启动WINDOWS以后,桌面就没了,但运行菜单在,也可以做很多事。
    改回来用启用时按F8进入dos->cd \windows->edit system.ini
    system.ini->boot->shell=Explorer.exe
      

  4.   

    参考参考:
    重起外壳:var 
      aa:Thandle;
    begin
       aa:=findwindow('progman',nil);
       postmessage(aa,wm_quit,0,0);
       winexec('explorer.exe',sw_show)end;
      

  5.   

    是象softice那样吗?
    用delphi好象做不出来。