【问题标题】:Signing assembly Access Is Denied签名程序集访问被拒绝
【发布时间】:2021-12-02 04:17:26
【问题描述】:

我最近升级到 WIndows 7。当我尝试在 VS2010 中对程序集进行签名时,我收到“访问被拒绝”错误。我以管理员身份登录,所以我很困惑。 VS 使用什么服务帐号,我应该提升它的权限?

谢谢,

理庄

【问题讨论】:

  • 问题似乎仍然与 Windows 10 Pro + Visual Studio 2019 相关。使用 sn 工具解决此问题,如 Tom Minka 在评论中提出的最佳答案。

标签: visual-studio-2010


【解决方案1】:

我不知道是 Window 7 还是公司政策,但我必须拥有 C:\Users\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys 文件夹的所有权并让自己完全控制。这更正了问题。

【讨论】:

  • 是的,这绝对有效。令人讨厌的问题。您只需将“仅限此文件夹”设置为“完全控制”即可。
  • 使用 Windows 10 的文件夹略有不同:我必须将权限添加到 C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys(无应用程序数据),但除此之外它按描述工作.
  • @SJP 仅供参考,C:\Users\All Users 是 C:\ProgramData 的别名,它在不显示隐藏系统文件的情况下可见。
  • 对我来说是 'C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys' 但同样的原理也有效。
  • 对我没用,我以管理员身份运行 VS,当然管理员可以完全控制但仍然出现错误
【解决方案2】:

解决方案:

从管理员命令提示符运行以下命令:

对于 64 位系统:

reg add HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\StrongName /v MachineKeyset /t REG_DWORD /d 0

对于 32 位系统:

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName /v MachineKeyset /t REG_DWORD /d 0

更改会立即生效。

为什么会这样:

Visual Studio 用于对程序集进行签名的 MS 程序集链接器 ALINK (AL.EXE) 在其工作期间创建一个临时加密密钥。实际上它为此使用了一些内部 CLR 函数,问题是默认使用 CRYPT_MACHINE_KEYSET 标志。这需要提升,这就是“以管理员身份”运行 VS 的原因。

但是,幸运的是,我发现 CLR 有一个用于 StrongName 签名的全局标志,它存储在系统注册表下的

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName

由DWORD值控制

MachineKeyset.

0 - 使用当前用户密钥集

1 - 使用机器密钥集(这是默认设置)

Visual Studio 是一个 32 位应用程序,并使用 32 位版本的 AL.EXE 进行构建。所以在 64 位系统上它受制于registry redirection,并且标志位于键下

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\StrongName

它适用于我的 VS2019、Win10 和 .Net framework 4.8,但我没有在以前的版本上测试过。

【讨论】:

  • 你也可以使用sn tool来执行这些功能:sn -m显示MachineKeyset的当前值,sn -m n设置上面的注册表值
  • 在 Win 64 位上它无法工作,直到我更改了这两个键。
【解决方案3】:

对于 windows 10 和 VS 2015,我必须以管理员身份运行 VS。

【讨论】:

  • 对我没用,我以管理员身份运行 VS,当然管理员可以完全控制但仍然出现错误。
【解决方案4】:

在 Win10 上,我授予启动 Visual Studio 的用户读取写入、运行、更改和显示文件夹的权限:

C:\ProgramData\Microsoft\Crypto

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 2012-05-14
    • 2018-07-20
    • 2013-01-03
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2016-06-04
    相关资源
    最近更新 更多