当我使用强名称工具创建一个新的密钥来签署.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和常规命令提示符。出现相同的错误消息。
答案 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重置强名称实用程序的密钥容器。因此,如果帐户访问修复不起作用,您可能正在使用备用密钥库,因此可能需要重置。