15

当我使用强名称工具创建新密钥以对 .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 和常规命令提示符。出现相同的错误消息。

4

5 回答 5

30

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

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

于 2008-08-15T02:22:18.227 回答
3

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

于 2008-08-15T02:06:02.830 回答
3

为什么不启动 sysinternals Process Monitor 来看看你能看到什么,当我收到任何类型的访问被拒绝消息时,这是我总是做的第一件事?

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

于 2008-08-15T03:43:15.350 回答
3

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

于 2009-11-29T21:08:14.660 回答
2

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

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

于 2009-02-24T05:53:48.643 回答