首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强名称sn.exe:未能安装密钥对对象已存在

强名称sn.exe:未能安装密钥对对象已存在
EN

Stack Overflow用户
提问于 2014-05-20 07:56:23
回答 2查看 15.2K关注 0票数 34

在我的机器上,我有两个不同版本的同一个项目。一个来自代码主干,另一个来自代码分支。这些项目使用.pfx键来启用强命名。当我第一次尝试编译该项目的主干版本时,我得到了以下错误:

无法导入以下密钥文件: sgKey.pfx。密钥文件可能受到密码保护。若要更正此问题,请再次导入证书,或手动将证书安装到强名称CSP,其密钥容器名称如下: VS_KEY_45891C38BC1BB345

为了解决这个问题,我将sn.exe与以下命令结合使用:

sn -i sg Key.pfx VS_KEY_45891C38BC1BB345

这解决了主干项目的问题,该主干项目随后愉快地构建。

但是,当我试图构建项目的分支版本时,我会收到相同的初始错误(具有相同的密钥容器名称),并且当我尝试使用sn.exe安装证书时(不足为奇)会出现以下错误:

未能安装密钥对-对象已经存在

这是有意义的,因为我在sn命令中使用了相同的infile和容器,但是我想要理解的是:

  1. 如果该对象已经存在,为什么该项目无法生成,因为它看起来已经安装了证书。
  2. 如何解决这个问题(例如,我可以卸载然后重新安装吗?)如果是的话,怎么做?)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-20 08:17:11

我设法解决了我的问题,但没有充分了解原因。我找到了一篇关于这里类似问题的帖子,但并不完全适合我的情况,因为我只作为一个用户登录过我的机器。

文章展示了如何删除容器,但我也做不到,因为它说容器不存在。它所做的是提示我以管理员的身份运行命令提示符,我以前没有这样做过。这使我可以卸载和重新安装证书,并且两个版本的项目现在都成功构建。

我的假设是,该证书最初(由我)安装在与我第二次尝试安装的证书不同的用户下,但我不知道为什么会这样,因为我只作为一个用户登录到机器上。对我来说这仍然是个谜。

摘要:

  1. 将developer命令提示符作为管理员启动,否则会出现误导性错误,说明容器不存在。
  2. 运行sn -d VS_KEY_XXXXXXXXXXX以移除旧键。
  3. 您现在应该能够重新安装证书了。
票数 62
EN

Stack Overflow用户

发布于 2017-11-28 19:39:52

在Windows 10上进行“刷新”之后,我们也遇到了同样的问题。

  1. 以管理员身份启动命令提示符。
  2. 运行"sn -m n“使证书基于用户而不是基于机器。
  3. 按常规方式安装证书( "sn -i VS_KEY_XX“或使用VS中的"properties”对话框)。

这就像刷新时将旧容器存储在某个隐藏区域,在那里它们不能被删除(但也会干扰相同容器的添加)。从当前用户的角度来看,更改为基于用户的方法允许一个干净的板子。注意,如果同一台计算机上有多个用户,他们可能需要注册证书。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23754044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档