sn.exe失败并显示“拒绝访问”错误消息

时间:2008-08-15 02:01:13

标签: .net strongname sn.exe

当我使用强名称工具创建一个新的密钥来签署.NET程序集时,我收到一条Access is Denied错误消息。这在Windows XP机器上运行得很好,但它在我的Vista机器上不起作用。

PS C:\users\brian\Dev\Projects\BELib\BELib> sn -k keypair.snk

Microsoft (R) .NET Framework Strong Name Utility  Version 3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

Failed to generate a strong name key pair -- Access is denied.

导致此问题的原因是什么?如何解决?


  

您是否正在运行PowerShell或   命令提示符为管理员?一世   发现这是第一个   看看你习惯了用户访问   控制或打开用户访问权限   控制关闭。

是的我尝试以管理员身份运行PS和常规命令提示符。出现相同的错误消息。

5 个答案:

答案 0 :(得分:27)

  

是的,我试过运行PS和   常规命令提示符为   管理员。相同的错误消息   来了。

另一种可能的解决方案可能是您需要授予您的用户帐户访问位于C:\ Documents and Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys

的密钥容器的权限

答案 1 :(得分:3)

您是否以管理员身份运行PowerShell或命令提示符?在您习惯用户访问控制或关闭用户访问控制之前,我发现这是首先要查看的内容。

答案 2 :(得分:3)

为什么不启动sysinternals进程监视器也看到你能看到的内容,这是我在收到任何拒绝访问消息时总是做的第一件事?

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

答案 3 :(得分:3)

稍微更新一下:我在Vista上遇到了同样的问题。我在PC上的本地用户没有问题,但后来我们切换到域,我的域用户(尽管有本地管理员权限)得到“拒绝访问”。 我授予我的域用户访问权限 C:\ Users \ All Users \ Microsoft \ Crypto \ RSA \ MachineKeys 并修复了它。

答案 4 :(得分:2)

有些人重建他们的机器来解决这个问题,但可以通过授予用户访问密钥容器 C:\ Documents and Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys <来解决此问题。 /强> 使用sn.exe -i创建的每个容器都位于MachineKeys目录中(除非您在其他地方指定)。 sn.exe使用的默认密钥容器也位于该位置。

如果您将密钥容器重置为新容器,并忘记它在哪里......您可以使用sn.exe -c重置强名称实用程序的密钥容器。因此,如果帐户访问修复不起作用,您可能正在使用备用密钥库,因此可能需要重置。