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


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

Обновлен: Июль 2008

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

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

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

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

Cc713694.alert_caution(ru-ru,VS.90).gifВажное примечание.

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

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

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

    - либо -

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

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

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

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

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

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

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

Cc713694.alert_note(ru-ru,VS.90).gifПримечание.

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

См. также

Ссылки

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

Элемент <bypassTrustedAppStrongNames>

Другие ресурсы

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

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

Дата

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

Причина

Июль 2008

Добавлен раздел.

Изменение функции SP1.