Получение дополнительных разрешений
Обновлен: Ноябрь 2007
Если для запуска управляемого приложения требуется более широкое разрешение, чем позволяет текущая политика, то это приложение, в зависимости от способа его разработки, либо сгенерирует исключение, либо не станет выполняться, либо будет неправильно работать. С помощью средства просмотра разрешений (Permview.exe) можно просмотреть для каждой сборки минимальный набор запрашиваемых разрешений, необязательные запрашиваемые разрешения, а также разрешения, в которых отказано; это позволяет сравнить разрешения, запрошенные сборкой, с фактически полученными ею. Следует заметить, что это средство показывает только те разрешения, которые были явным образом запрошены приложением с использованием декларативного синтаксиса. Обладая этими сведениями, можно расширить полученные сборкой разрешения, создав новую группу кода и связав ее с новым набором разрешений, в который будут включены все разрешения, необходимые приложению для нормальной работы. Однако расширять разрешения следует только при наличии доверия к источнику приложения и при условии, что это доверие основывается на надежном свидетельстве. (В большинстве случаев администраторы создают несколько специальных групп кода, которые могут быть использованы для распределения по категориям нескольких приложений, запрашивающих схожие разрешения.)
Предположим, что на общем сетевом диске установлено приложение, к которому часто обращается группа пользователей. В неуправляемом контексте подобная ситуация в большинстве случаев не влечет за собой каких-либо проблем, связанных с выполнением. Но в управляемом контексте этому приложению может быть предоставлен ограниченный набор разрешений, поскольку его источником является зона локальной интрасети. Например, приложению могут быть предоставлены не все разрешения на печать, что ограничит его полезность. Вместо того чтобы ослаблять параметры для зоны локальной интрасети в целом, следует выполнить следующие действия.
Используйте средство просмотра разрешений (Permview.exe) для просмотра минимального набора разрешений, запрашиваемых сборкой, разрешения которой требуется расширить. Это наименьший набор разрешений, необходимый для выполнения приложения.
Определите уникальные характеристики сборки. Такой характеристикой может быть строгое имя сборки, ее открытый ключ, ее хэш-код или уникальный пользовательский атрибут. Если источником приложения является доверенный сервер, его расположение также может использоваться для идентификации приложения. Следует помнить, что весь код с этими характеристиками считается доверенным.
Создайте новую группу кода, для членства в которой требуется уникальный идентификатор. Для создания группы кода используйте средство настройки .NET Framework (Mscorcfg.msc) или средство для настройки политики управления доступом для кода (Caspol.exe).
Создайте новый набор разрешений, включив в него минимальный набор разрешений, необходимый для выполнения сборки; для этого можно использовать средство настройки .NET Framework или средство для настройки политики управления доступом для кода.
Свяжите новый набор разрешений с новой группой кода, используя средство настройки .NET Framework или средство для настройки политики управления доступом для кода.
После того как все эти действия будут выполнены, приложение будет запущено и получит достаточные разрешения для функционирования. Остальные приложения с меньшим уровнем доверия не получат дополнительных разрешений, что защитит систему от вредоносного кода. Дополнительные сведения о выполнении конкретных задач с использованием средств безопасности см. в разделе Настройка политики безопасности.