Поделиться через


Практическое руководство. Отключение функции пропуска строгих имен

Начиная с версии .NET Framework 3.5 с пакетом обновления 1 (SP1) подписи строгого имени не проходили проверку при загрузке сборки в объект AppDomain с полным доверием, например в объект AppDomain по умолчанию для зоны MyComputer. Эта функция называется пропуском строгих имен. В среде с полным доверием запрос разрешения StrongNameIdentityPermission всегда завершается успешно для подписанных сборок с полным доверием независимо от их подписей. Единственное исключение связано с тем, что сборка должна иметь полное доверие, потому что полное доверие имеет ее зона. Поскольку в этом случае наличие строгого имени не является решающим фактором, смысла в проверке подписи нет. Пропуск проверки подписей строгого имени позволяет значительно повысить производительность приложения.

Функция пропуска применяется ко всем сборкам с полным доверием, если у них не отложенных подписей и они загружены в любой домен AppDomain с полным доверием, заданный свойством ApplicationBase.

Можно отключить пропуск для всех приложений на компьютере, если изменить значение параметра реестра. Для отключения пропуска для отдельного приложения необходимо внести соответствующие изменения в файл конфигурации приложения. Если функция пропуска строгих имен отключена в реестре, ее невозможно включить для отдельного приложения.

При отключении функции пропуска строгие имена проверяются только на правильность; наличие разрешения StrongNameIdentityPermission не проверяется. Если требуется подтвердить то или иное строгое имя, такую проверку необходимо выполнять отдельно.

Важное примечаниеВажно

Возможность принудительного проведения проверки строгого имени зависит от значения параметра реестра, как описано ниже.Если приложение выполняется от имени учетной записи, для которой в списке управления доступом не выделено разрешение на доступ к этому параметру реестра, проведение проверки невозможно.Необходимо настроить права ACL для данного раздела так, чтобы к нему могла получить доступ любая сборка.

Отключение функции пропуска строгих имен для всех приложений

  • На 32-разрядных компьютерах в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework системного реестра создайте запись DWORD со значением 0 и именем AllowStrongNameBypass.

  • На 64-разрядных компьютерах в разделах системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework и HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework создайте запись DWORD со значением 0 и именем AllowStrongNameBypass.

Отключение функции пропуска строгих имен для отдельного приложения

  1. Откройте или создайте файл конфигурации приложения.

    Дополнительные сведения об этом файле см. в разделе "Файлы конфигурации приложений" документа Файлы конфигурации.

  2. Добавьте следующий элемент:

    <configuration>
      <runtime>
         < bypassTrustedAppStrongNames enabled="false" />
      </runtime>
    </configuration>
    

Функцию пропуска строгих имен для приложения можно снова включить, удалив соответствующий элемент из файла конфигурации или установив для атрибута значение "true".

ПримечаниеПримечание

Функцию проверки строгих имен можно включать и отключать на уровне приложения, если пропуск строгих имен включен на уровне компьютера.Если функция пропуска на уровне компьютера отключена, строгие имена будут проверяться для всех приложений, и пропустить проверку для отдельного приложения будет невозможно.

См. также

Ссылки

Sn.exe (средство строгих имен)

Элемент <bypassTrustedAppStrongNames>

Основные понятия

Создание и использование сборок со строгими именами

Журнал изменений

Дата

Журнал

Причина

Август 2010

Обновлена информация о записи в реестр.

Обратная связь от клиента.