当我使用强名称工具创建新密钥来签署.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.
是什么导致了这个问题,我该如何解决它?
您是否以管理员身份运行PowerShell或命令提示符?我发现这是第一个要查看的地方,直到您习惯了用户访问控制或关闭用户访问控制。
是的,我试过以管理员身份运行PS和常规命令提示符。同样的错误信息出现了。
6条答案
按热度按时间bgtovc5b1#
是的,我试过以管理员身份运行PS和常规命令提示符。同样的错误信息出现了。
另一种可能的解决方案是,您需要向您的用户帐户授予对位于C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys的密钥容器的访问权限
yqkkidmi2#
您是否以管理员身份运行PowerShell或命令提示符?我发现这是第一个要查看的地方,直到您习惯了用户访问控制或关闭用户访问控制。
uttx8gqw3#
为什么不启动sysinternals进程监视器看看你能看到什么,这是我总是做的第一件事,当我得到任何类型的访问拒绝消息?
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
dfuffjeb4#
只是稍微更新一下:我在Vista上遇到了同样的问题。我在PC上的本地用户没有问题,但后来我们切换到一个域,我的域用户(尽管有本地管理员权限)被“拒绝访问”。我将我的域用户访问权限授予C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys,并解决了它。
yv5phkfx5#
有些人重建计算机以解决此问题,但可以通过向用户提供对密钥容器的访问权限来解决此问题C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys使用sn.exe -i创建的每个容器都位于MachineKeys目录中(除非您在其他地方指定)。sn.exe使用的默认密钥容器也位于该位置。
如果您将密钥容器重置为新的,但忘记了它在哪里..您可以使用sn.exe -c重置强名称实用程序的密钥容器。因此,如果帐户访问修复不起作用,您可能正在使用备用密钥存储,因此重置可能是有序的。
kd3sttzy6#
更新为Win 10+:
新路径为:C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
由于System是文件夹的所有者,因此您需要将其更改为具有管理员访问权限的用户或组。完成此操作后,您可以继续将Everyone的权限更改为读/写。