sn.exe失败,并显示"访问被拒绝"错误消息
当我使用强名称工具创建新密钥来签署.NET程序集时,出现"访问被拒绝"错误消息。这在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.
是什么导致此问题,我该如何解决?
Are you running your PowerShell or Command Prompt as an Administrator? I found this to be the first place to look until you get used to User Access Control or by turning User Access Control off.
是的,我已经尝试以管理员身份运行PS和常规命令提示符。出现相同的错误消息。
解决方案
回答
我们是否以管理员身份运行PowerShell或者命令提示符?在我们习惯了用户访问控制或者关闭用户访问控制之前,我发现它是查找的第一个地方。
回答
Yes I have tried running PS and the regular command prompt as administrator. The same error message comes up.
另一个可能的解决方案是我们需要授予用户帐户访问位于C:\ Documents and Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys的密钥容器的权限
回答
为什么不启动sysinternals Process Monitor也能看到我们看到的内容,这是我收到任何拒绝访问消息时始终要做的第一件事?
http://technet.microsoft.com/zh-cn/sysinternals/bb896645.aspx
回答
有人重建了机器来解决此问题,但是可以通过授予用户访问密钥容器C:\ Documents and Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys的方法来解决
使用sn.exe -i创建的每个容器都位于MachineKeys目录中(除非我们在其他位置指定)。 sn.exe使用的默认密钥容器也位于该位置。
如果我们将密钥容器重置为一个新的容器,而忘记了它的位置,则可以使用sn.exe -c为强名称实用程序重置密钥容器。因此,如果帐户访问修复不起作用,则我们可能正在使用备用密钥存储,因此可能需要进行重置。
回答
只是更新一下:我在Vista中遇到了相同的问题。我在PC上的本地用户没有问题,但是随后我们切换到了一个域,并且我的域用户(尽管具有本地管理员权限)获得了"访问被拒绝"。
我授予域用户对C:\ Users \ All Users \ Microsoft \ Crypto \ RSA \ MachineKeys的访问权限,并对此进行了修复。