Codeproject里有一个例子,是HOOK Advapi32.dll里面的RegEnumValueW这个API的,在XP下能很好地工作,但在98下却没有反应。
codeguru里的一个例子,用了相同的方法,只不过它HOOK了DDRAW.dll里面的DirectDrawCreateEx在98和XP下都能很好地工作。
我也试过将第一个例子的RegEnumValueW改成RegEnumValueA,但还是不行,98和XP下,这个函数的参数应该是一样的呀。
究竟是什么原因呢??

解决方案 »

  1.   

    MSDN中对RegEnumValue的Require:Unicode: Implemented as Unicode and ANSI versions. Note that Unicode support on Windows Me/98/95 requires Microsoft Layer for Unicode.
    会不会是这个问题?
      

  2.   

    应该把ANSI和UNICODE的两个函数都重载了。
      

  3.   

    RegEnumValueW改成RegEnumValueA这两个我都试过了。
      

  4.   

    建议你查一下REGEDIT.EXE调用的DLL,然后,使用VC下的那个什么DUMP什么的文件(我以前用过,好久没用,名字忘了)把可疑的DLL的API函数导出来,这样一般就可以抓出来了,我以前HOOK的时候就这么干的,呵呵。
      

  5.   

    你的意思是我没HOOK对这个API?
      

  6.   

    有可能啊,你先HOOK,然后用OutputDebugString来测试一下是否确实调用了这个函数啊,如果调用了,那就是这个函数啊,你自己测试一下不就知道了
      

  7.   

    Win98下不可能列举注册都不用RegEnumValue这个吧?