Я получаю сообщение об ошибке «Доступ запрещен», когда использую инструмент строгого имени для создания нового ключа для подписи сборки .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.
Блин, если бы я мог дать больше +1. Я люблю тебя очень!
В Windows 7 путь - C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys. Возможно, вам придется включить отображение скрытых и системных файлов, чтобы увидеть папку All Users.
Почему бы не запустить sysinternals Process Monitor и посмотреть, что вы видите, это первое, что я всегда делаю, когда получаю какое-либо сообщение об отказе в доступе?
http://technet.microsoft.com/en-us/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. У моего локального пользователя на ПК не было проблем, но затем мы переключились на домен, и мой пользователь домена (хотя и имел права локального администратора) получил «Доступ запрещен». Я предоставил права доступа пользователя домена к C: \ Users \ All Users \ Microsoft \ Crypto \ RSA \ MachineKeys, и это исправило его.
В Windows 7 это C: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys
%ALLUSERSPROFILE%\Microsoft\Crypto\RSA\MachineKeys
Это пользовательский контроль Счет!