日期:2014-05-19  浏览次数:20857 次

关于强签名的问题
怎么在自己的程序里+强签名,保证自己的程序不被别人随意调用?
我参考了http://www.cnblogs.com/BearsTaR/archive/2006/05/25/ProtectDll.html
的写法。发现在2.0里没有用啊。
在2.0里该任何使用强签名呢?谢谢

------解决方案--------------------
http://www.dotnet-space.com/8710/
看看这个,不知道对你有没有用,没有做过这个东西
------解决方案--------------------
首先纠正你一个错误,那就是,强名称不是为了保证你的东西不被别人调用,如果是这样,mscorlib.dll是签名的,为什么所有人都可以用?
强名称能够保证的是,你的程序集具有一个签名后的名称,保证你的程序不会被篡改,同时,由于用于签名的私钥只有你有,那么别人也无法生成和你的程序集相同的强名称,这就保证了用户使用的程序集一定是你的,别人无法替换你的程序集,因为引用方是按照强名称进行引用的。
------解决方案--------------------
2.0里面很容易呀,可以和1.0、1.1一样,也可以打开程序集的属性窗口选择签名!如果你所引用的程序集是强名称的,那么这个程序集所引用的其他程序集也必须是强名称!
------解决方案--------------------
你要搞的是友元吧?
------解决方案--------------------
Laves(树懒)
我现在写了个DLL类库,使用了SNK进行强签名(并使用了延迟签名),我自己要调用该DLL,该如何实现?我的问题是这样的。

ezhuyin()
我是这样给类库签名的,问题调用的时候该任何操作。。。

答:引用DLL还是比较容易的。
打开要引用的方案,右键点,选Add Reference...,跳出来一个窗口,选Browse,然后选你要加入的dll类库。点OK,搞定。
以上在VS2005 Professional 英文版通过。中文版的Add Reference可能翻译为“新增引用”之类的。
------解决方案--------------------
BS倒分 下面注意保持队形
------解决方案--------------------
ezhuyin(碧海蓝天)

我的问题不是不会引用DLL,是应用强签名的DLL时报“未能加载文件或程序集“ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5749eca5e202a5e4”或它的某一个依赖项。强名称验证失败。 (异常来自 HRESULT:0x8013141A)”

========================================================
将原来的项目(生成这个DLL的项目)重新签名,然后生成,再次引用。试试看,我不确定是否可用。
------解决方案--------------------
up
------解决方案--------------------
如果你分发一个没有进行正确签名的程序集,将不能保证它没有被篡改。如果用户没有设置忽略强名称确认,CLR将会拒绝载入这个程序集。 下面任何一条都会引起这条规则校验失败: 1. 这个程序集没有进行强名称签名2. 进行签名后,这个程序集被修改过。3. 程序集被设置成延迟签名4. 程序集签名失败5. 程序集需要一定的注册表设置才能通过强名称校验 上面的文字是从网站上拷贝的,说直白点,就是说,对于强名称验证过的dll,exe等,修改将导致验证失败,不能正常运行。(http://bbs.pediy.com/showthread.php?p=265702)

我目前确定不了你的问题,检查下面几个内容:
1、ClassLibrary1所引用的程序集中是否在当前项目环境下都已经被签名或者完整;
2、ClassLibrary1是否被意外修改,如果没有强名称,去掉PublicKeyToken=5749eca5e202a5e4,改为PublicKeyToken=null;
3、是否延迟签名;