vc6.0做的DLL,能否控制该DLL只能在指定的工程中运行??????????????????????????????
例如: FOR.dll只能在一个叫Repadf.exe的项目中运行。
谢谢

解决方案 »

  1.   

    可以在dll加载之后exe调用dll中的某个函数,如果失败则退出程序什么的.
      

  2.   

    你的动态库不是可以调用GetCurrentModule吗?对这个判断就行了。如果你导出去的是类,在构造函数里面加。如果不是,那么就导出个接口,使用本动态库前必须调用你的接口就可以了。
      

  3.   

    在DllMain里
    if (dwReason == DLL_PROCESS_ATTACH)
    {
    TRACE0("licdll.DLL 正在初始化!\n");
                    TCHAR MF[MAX_PATH];
    GetModuleFileName(hInstance,MF,sizeof(MF));
             if(MF的后10位不是Repadf.exe)
                 return 0;
      

  4.   

    if   (dwReason   ==   DLL_PROCESS_ATTACH) 

    TRACE0("licdll.DLL   正在初始化!\n"); 
                                    TCHAR   MF[MAX_PATH]; 
    GetModuleFileName(hInstance,MF,sizeof(MF)); 
                      if(MF的后10位不是Repadf.exe) 
                              return   0;MF得到的应该是改dll的 路径啊 ,好像没什么用啊?
      

  5.   

    将GetModuleFileName(hInstance,MF,sizeof(MF))中的hInstance换成 NULL 就可以了。
      

  6.   

    GetModuleFileName也不行啊,如果用户将文件名改了,(Repadf.exe  -》 识别.exe)就不行了啊,
    文件名得允许用户改动啊。
      

  7.   

    最好是加入验证机制, 比如传入参数包含当前计算机特定的值而计算得到的值. 交由DLL验证正确性, 如果不符,就拒绝执行函数.
    验证函数不导出.在DLL内部使用.