呵呵,是用了DB的DLL,不想张扬被发现,才出此下策。

解决方案 »

  1.   

    可以用GZipStream(.NET自带类) 先把DLL文件压缩,然后在程序运行的时候动态的解压文件到运行目录再动态引用DLL
      

  2.   

    Knight94(愚翁) 最近怎么不大现身了
      

  3.   

    hbxtlhx(平民百姓):但在运行过程中仍有DLL出现,如何避免出现在硬盘?
      

  4.   

    如果真的要不出现的话,有一个办法可以做到,那就是动态编译的技术.
    就是把代码文件作为程序的资源(可以加密),然后在程序运行的时候读出这些代码文件做为字符串(有三种动态编译方式)然后传给动态编译器,动态编译器编译完成后可以在内存中生成可以被动态调用的Assembly.这样的话就没有任何的DLL出现在磁盘上了.
      

  5.   

    这个动态编译的技术,可以参考.NET的CSharpCodeProvider类,如:CSharpCodeProvider provider = new CSharpCodeProvider();
    CompilerParameters cp = new CompilerParameters();
    foreach (string us in usings)
    {
    cp.ReferencedAssemblies.Add(us);
    }
    cp.GenerateExecutable = false;
    cp.OutputAssembly = null;
    cp.GenerateInMemory = true;CompilerResults cr = provider.CompileAssemblyFromSource(cp, source);
    if (cr.Errors.Count > 0)
    {
    }
    else
    {
    }
      

  6.   

    GenerateExecutable,GenerateInMemory 及CompileAssemblyFromSource是楼主问题的关键.
      

  7.   

    to 是用了DB的DLL,不想张扬被发现,才出此下策。不会用了有版权的dllto leohuang(LEO)前一段比较忙,最近稍微好些。
      

  8.   

    hbxtlhx(平民百姓):谢谢你的思路。
      

  9.   

    是不想让别人看到我用了哪些DLL