在组件程序DllMain里,只允许regsvr32.exe和QQ.exe加载,代码如下:
if (dwReason == DLL_PROCESS_ATTACH)
{
     if ( lstrcmpi( Loader, _T("QQ.exe")) != 0 && lstrcmpi( Loader, _T("regsvr32.exe")) 
                   != 0)
            return FALSE;
}如果再增加在程序中允许动态装载,也就是可以允许LoadLibrary("xxx.dll")该如何写这句话呢?请赐教,谢谢-)

解决方案 »

  1.   

    不明白楼主的意思。
    任何程序加载时xxx.dll时,都会调用DllMain,所以上面的代码,只能被加载到QQ.exe或regsvr32.exe中。要让其它程序也能加载,只能把程序的进程名称像上面一样写到代码中。
      

  2.   

    我写了,可不起作用,LoadLibrary失败,也就是初始化失败
      

  3.   

    如果说是启动别应用程序然后自动加载,直接加进程名称像上面一样写到代码中是没问题的。我现在要求的是,在程序中动态装载(LoadLibrary())
      

  4.   

    不知道你想要做的是什么?
    如果你只想要regsvr32.exe和QQ.exe加载。
    就这么写
    if (dwReason == DLL_PROCESS_ATTACH)
    {
        GetModuleFileName(NULL, psLoader, MAX_PATH);
       _tcslwr(psLoader);
       if(_tcsstr(psLoader, _T("regsvr32.exe"))==NULL&&_tcsstr(psLoader, _T("regsvr32.exe"))==NULL) 
      return FALSE;
    }