Сбой 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.
Что вызывает эту проблему и как я могу это исправить?
Вы используете PowerShell или командную строку от имени администратора? Я обнаружил, что это первое место, где можно посмотреть, пока вы не привыкнете к управлению доступом пользователей или не отключите контроль доступа пользователей.
Да, я пробовал запустить PS и обычную командную строку от имени администратора. Появляется то же сообщение об ошибке.
6 ответов
Да, я пробовал запустить PS и обычную командную строку от имени администратора. Появляется то же сообщение об ошибке.
Другим возможным решением может быть предоставление учетной записи пользователя доступа к контейнеру ключей, расположенному в C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys.
Просто чтобы обновить это немного: я столкнулся с той же проблемой на Vista. У моего локального пользователя на ПК не было проблем, но затем мы переключились на домен, и мой пользователь домена (хотя и с правами локального администратора) получил "Отказ в доступе". Я предоставил права доступа пользователя моего домена к C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys, и это исправило это.
Вы используете PowerShell или командную строку от имени администратора? Я обнаружил, что это первое место, где можно посмотреть, пока вы не привыкнете к управлению доступом пользователей или не отключите контроль доступа пользователей.
Почему бы не запустить 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. Таким образом, если исправление доступа к учетной записи не работает, возможно, вы используете альтернативное хранилище ключей, поэтому можно выполнить сброс.
Обновление для Win 10+:
Новый путь: C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys.
Поскольку владельцем папки является Система, вам необходимо изменить ее на пользователя или группу с правами администратора. Сделав это, вы можете приступить к изменению разрешения для всех на чтение/запись.