我在别人的机器上试了光有一个dll,也能跑起来?这是为什么呢?

解决方案 »

  1.   

    我遇到的是把强命名的dll给改了,但不报异常一样能编译通过。
      

  2.   

    在别人的机器上怎么调用的?直接引用dll么?那这和一般的引用dll有啥区别?
      

  3.   

    据说不改dll就不行了,也不知道真的假的。
      

  4.   

    谁告诉过你“如果我只给别人一个dll不给snk,对方肯定是运行不了”的?签名只是防止被非法篡改而已,就是说1不可以2不需要...
      

  5.   

    1. 如果他反编译了,就是有源码了,那他当然可以干任何想干的事,而和你的dll没有关系了。
    2. 如果没有源码,他不可以使用你的强命名后的dll,如果没有snk的话
      

  6.   

    1、我试了加了强命名的dll不用给snk,对方是可以运行的。
    2、我用二进制修改了强命名后的dll,仍然可以运行,只是输出内容变成我的修改。难道是在同一台机器上的原因吗?
      

  7.   

    第二点我不认识,我把一个强命名的dll给另外一台机器,引用后仍然可以用,那台机器没有snk.
      

  8.   

    强名称是给自己的程序用的,保证你的程序可以检测出使用的是自己认证的安全的程序集;
    与别人是否能正常调用你的程序集无关。
    这样别人用冒名的程序集顶替你的强名称程序集时你的程序会检测出,并产生错误报告。
    问题一,不可给出snk文件,这和你把银行账户和密码同时交给陌生人一样。
    问题二,理论上是不可能的,加密算法是不可逆推的算法,理论上不可能随便替换掉。