怎么样让一个EXE程序起动时就加载我的DLL,
比如我要当Explorer起动时就加载我指定的DLL,该怎么做~~~?????

解决方案 »

  1.   

    windows核心编程中有介绍`
    `
    `
      

  2.   

    使用隐式链接,则所有的DLL在客户文件加载时都被加载
    隐式链接即在在源文件中写入像下面这样的声明:
    extern "C" _declspec(dllimport)int MyFunction()
      

  3.   

    那个EXE不是你写的是吧?那样你的这个DLL就要作为服务先运行起来了。
      

  4.   

    不知道把你DLL映射到你的程序的地址空间行吗?
      

  5.   

    好像在注册表的某个地方写一下就行了(我没看错,DLL也是的,我看的一本书上的那本书记不得了)
      

  6.   

    如果你是想对所有EXE这样做,那不可能
      

  7.   

    同意sevencat(seven),对应的表项为
    HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLS在此添加的链接库将在进入windows时加载,并映射到所有进程的地址空间中。像KERNEL32.DLL一样。需要重启动
      

  8.   

    首先感谢大家的帮忙~~~~!!!!to : bullfinch(night_fly) :
    你说的是在NT\2000下的吧,那么我想问一下,98下在哪里呢??????
    我想让我的DLL通用,to  所有人:分不够我还可以再给~~~~~!!!
      

  9.   

    98下不能通过注册表来实现。
    98下有一段共享内存,可以把你的dll映射到哪里。
      

  10.   

    同意: kingcom_xu(我的刀是杀不了人的) :
    eunt(小妖) 说的就是HOOK注入吗~~????还有我按照: bullfinch(night_fly) 说的改了HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLS,我的电脑蹦溃了~~~~!!!(我现在在另一台机上上网)
    请问怎么回事~~~~???
      

  11.   

    不是hook,是文件映射.不过别的程序必须知道你的dll的位置才能用你的dll.
    用hook也是可以的.还有远程线程,不过98不支持~~
    还有好几种方法,比如:调试api,替换dll文件.....
    <<windows核心编程>>中不是有介绍,说是有5种方法.
      

  12.   

    用你的DLL替换原来那个EXE所用的DLL,但你需要知道原DLL的所有函数入口,至少是它要用到的函数入口
      

  13.   

    去查查<<windows核心编程>>
      

  14.   

    to : qrlvls(怜松) :
    你说的这种芳法不是很实用~~!!
    还有更好的么~~~???