Практическое руководство. Отключение функции пропуска строгих имен
Обновлен: Июль 2008
Начиная с версии .NET Framework 3.5 с пакетом обновления 1 (SP1) подписи строгого имени не проходили проверку при загрузке сборки в объект AppDomain с полным доверием, например в объект AppDomain по умолчанию для зоны MyComputer. Эта функция называется пропуском строгих имен. В среде с полным доверием запрос разрешения StrongNameIdentityPermission всегда завершается успешно для подписанных сборок с полным доверием независимо от их подписей. Единственное исключение связано с тем, что сборка должна иметь полное доверие, потому что полное доверие имеет ее зона. Поскольку в этом случае наличие строгого имени не является решающим фактором, смысла в проверке подписи нет. Пропуск проверки подписей строгого имени позволяет значительно повысить производительность приложения.
Функция пропуска применяется ко всем сборкам с полным доверием, если у них не отложенных подписей и они загружены в любой домен AppDomain с полным доверием, заданный свойством ApplicationBase.
Можно отключить пропуск для всех приложений на компьютере, если изменить значение параметра реестра. Для отключения пропуска для отдельного приложения необходимо внести соответствующие изменения в файл конфигурации приложения. Если функция пропуска строгих имен отключена в реестре, ее невозможно включить для отдельного приложения.
При отключении функции пропуска строгие имена проверяются только на правильность; наличие разрешения StrongNameIdentityPermission не проверяется. Если требуется подтвердить то или иное строгое имя, такую проверку необходимо выполнять отдельно.
Важное примечание. |
---|
Возможность принудительного проведения проверки строгого имени зависит от значения параметра реестра, как описано ниже. Если приложение выполняется от имени учетной записи, для которой в списке управления доступом не выделено разрешение на доступ к этому параметру реестра, проведение проверки невозможно. Необходимо настроить права 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.
Отключение функции пропуска строгих имен для отдельного приложения
Откройте или создайте файл конфигурации приложения.
Дополнительные сведения об этом файле см. в разделе Файлы конфигурации приложений.
Добавьте следующий элемент:
<configuration> <runtime> < bypassTrustedAppStrongNames enabled="false" /> </runtime> </configuration>
Функцию пропуска строгих имен для приложения можно снова включить, удалив соответствующий элемент из файла конфигурации или установив для атрибута значение "true".
Примечание. |
---|
Функцию проверки строгих имен можно включать и отключать на уровне приложения, если пропуск строгих имен включен на уровне компьютера. Если функция пропуска на уровне компьютера отключена, строгие имена будут проверяться для всех приложений, и пропустить проверку для отдельного приложения будет невозможно. |
См. также
Ссылки
Средство строгих имен (Sn.exe)
Элемент <bypassTrustedAppStrongNames>
Другие ресурсы
Создание и использование сборок со строгими именами
Журнал изменений
Дата |
Журнал изменений |
Причина |
---|---|---|
Июль 2008 |
Добавлен раздел. |
Изменение функции SP1. |