强名的作用是访止别人无意或有意或恶意改动你的IL代码,不是反编译。如果要想防止反编译几乎不可能。但可以使用混淆工具,加以混淆,以增加反编译的难度。事实上,如果你的DLL经过你加密了,只有你可以打开的话,假如这种情况成立,那么其它的机器上的操作统也打不开你的程序,看来你不得不为你的程序再重新开发一套操作系统才行。

解决方案 »

  1.   

    可是DLL无法混淆啊,因为现在的混淆都是把方法的名称改乱,这样的话我自己的调用程序也要用改乱后的方法名称才能调用
      

  2.   

    “控制我的DLL只能我私有,不会被别人的程序所调用”,一定要的话,如果不怕麻烦,在程序集A中每个调用函数的时候,用System.Reflection.Assembly.GetCallingAssembly().FullName == "B程序集名"判断.
      

  3.   

    公钥、密钥
    是一个对称加密对,你的*.snk文件就是一个密钥。公钥写进程序集清单。防止别人修改你的程序集。