未能加载文件或程序集“xxx”或它的某一个依赖项。强名称验证失败
2017-09-27 12:03
971 查看
当我们从互联网上下载一个程序集供本地调用的时候,如何保证这个程序集是未经第三方恶意篡改过的呢?如果两个程序集的名称、大小、版本号都相同是不是就意味着这两个程序集文件就相同了呢?在.NET平台下区分程序集采用的方法是使用名称,但是名称有强弱之分。
强名称在弱名称的基础上添加了数字签名,并且强名称签名的程序集不能引用未被签名的程序集。
强名称的作用主要有三个:一是区分不同的程序集;二是确保代码没有被篡改过;三是在.NET中,只有强名称签名的程序集才能放到全局程序集缓存中。
并且为了开发方便,执行了忽略强名称验证的命令(xxx 为签名的程序集名称):
但是执行代码调试时,仍然出现了错误(publicKey为: e982c879116440581,根据实际情况会不同):
x86:
x64:
查看实际的位置时,发现Wow6432Node注册项下确实有(我的是x64位系统):
但根本就没有
所以采用手动建立该注册项,并添加响应的注册项到该目录下。为了简单,直接建立了
强名称在弱名称的基础上添加了数字签名,并且强名称签名的程序集不能引用未被签名的程序集。
强名称的作用主要有三个:一是区分不同的程序集;二是确保代码没有被篡改过;三是在.NET中,只有强名称签名的程序集才能放到全局程序集缓存中。
一、问题背景
在使用 vs 开发过程中,.Net程序集的dll与exe使用了签名(仅延时签名)并且为了开发方便,执行了忽略强名称验证的命令(xxx 为签名的程序集名称):
sn.exe -Vr xxx
但是执行代码调试时,仍然出现了错误(publicKey为: e982c879116440581,根据实际情况会不同):
二、解决方法
实际上为了开发方便,执行禁用.Net程序集强名称验证的操作(sn.exe -Vr xxx),会在注册表中添加对应的注册项,具体位置如下:x86:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\
x64:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\]
查看实际的位置时,发现Wow6432Node注册项下确实有(我的是x64位系统):
但根本就没有
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification这个注册项,而我的应用程序是x64的,需要使用该注册项来验证.Net程序集的强命名。
所以采用手动建立该注册项,并添加响应的注册项到该目录下。为了简单,直接建立了
*,e982c879116440581注册项。(如果添加 “*”,将禁用所有的.Net程序集强名称验证)
相关文章推荐
- 未能加载文件或程序集“Enyim.Caching”或它的某一个依赖项。未能验证强名称签名。此程序集可能已被篡改,或者已被延迟签名,但没有用正确的私钥进行完全签名。 (异常来自 HRESULT:0x80
- 未能加载文件或程序集“XXXXX”或它的某一个依赖项。未能验证强名称签名。此程序集可能已被篡改,或者已被延迟签名,但没有用正确的私钥进行完全签名。 (异常来自 HRESULT:0x80131045)
- 未能加载文件或程序集“Enyim.Caching”或它的某一个依赖项。未能验证强名称签名
- mvc4源码调试“未能加载文件或程序集“System.Web.Mvc”或它的某一个依赖项。未能验证强名称签名。解决办法
- 未能加载文件或程序集“XXX”或它的某一个依赖项。磁盘空间不足---解决方案
- 未能加载文件或程序集“xxx”或它的某一个依赖项。试图加载格式不正确的程序。
- 未能加载文件或程序集“xxx”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
- C# 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
- VB.Net未能加载文件或程序集“XXX”或它的某一个依赖项。
- C# 未能加载文件或程序集“xxx”或它的某一个依赖项。参数错误。(异常来自 HRESULT:0x80070057 (E_INVALIDARG))
- 未能加载文件或程序集“xxx”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集
- 未能加载文件或程序集“XXX”或它的某一个依赖项。磁盘空间不足---解决方案
- 64位系统 IIS7.0配置.net网站时报错:未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
- 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
- 未能加载文件或程序集“xxx”或它的某一个依赖项。拒绝访问。
- IIS7出现未能加载文件或程序集“XXX.XXX”或它的某一个依赖项。试图加载格式不正确的程序的解决方法
- WindowsServer部署mvc,“未能加载文件或程序集“XXX”或它的某一个依赖项”错误
- asp.net 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
- 未能加载文件或程序集“XXX”或它的某一个依赖项。系统找不到指定的文件。
- 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序