Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AppDomain и StrongName[], В чем предназначение параметра? 
V
    Опции темы
vecT
Дата 21.1.2011, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



Есть статический метод AppDomain.CreateDomain( string friendlyName,
                        Evidence securityInfo,
                        AppDomainSetup info,
                        PermissionSet grantSet,
                        params StrongName[] fullTrustAssemblies);
По мсдн-у последний аргумент содержит список строгих имен сборок для которых будет использован режим полного доверия, то есть, по логике, ограничения накладываемые grantSet должны игнорироваться. Однако у меня так и не получилось заставить работать сборку в таком режиме.
Следующий код (Консольное приложение имеющее строгое имя):
Код

using System;
using System.Security;
using System.Security.Policy;
using System.IO;
using System.Reflection;
using System.Runtime.Remoting;

[assembly: SecurityRules(SecurityRuleSet.Level2)]
namespace SimpleTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //Создание домена
            AppDomainSetup info = new AppDomainSetup();
            info.ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            StrongName sName_Main = Assembly.GetExecutingAssembly().Evidence.GetHostEvidence<StrongName>();
            AppDomain domain = AppDomain.CreateDomain("sundboxedWithFT", null, info, GetPermissionSet(), new StrongName[] { sName_Main});
            //Создание экземпляра объекта в изолированном домене
            Type t = typeof(FileWriter);
            ObjectHandle handle = Activator.CreateInstanceFrom(domain, t.Assembly.ManifestModule.FullyQualifiedName, t.FullName);
            FileWriter infos = (FileWriter)handle.Unwrap();
            //Выполнение небезопасного кода, вызывающего исключение
            infos.WriteInfo();
        }


        public static PermissionSet GetPermissionSet()
        {
            Evidence ev = new Evidence();
            ev.AddHostEvidence(new Zone(SecurityZone.Internet));
            return SecurityManager.GetStandardSandbox(ev);
        }
    }

    class FileWriter:MarshalByRefObject
    {
        public void WriteInfo()
        {
            using (System.IO.FileStream fstr = new System.IO.FileStream(@"test.txt", System.IO.FileMode.OpenOrCreate))
            {
                fstr.Write(System.Text.Encoding.Default.GetBytes("\nhello from app"), 0, 15);
                fstr.Flush();
                fstr.Close();
            }
        }
    }
}


Вызывает SecurityException. :( 
Что я упустил?
PM MAIL   Вверх
vecT
Дата 24.1.2011, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



Ну, в общем, я уже и сам разобрался.  PermissionSet -ы применяются ко всем загруженым в домен сборкам независимо от того, входят ли они в   fullTrustAssemblies или нет. Сам же список StronName[] определяет сборки имеющие доступ к SecurityCritical - коду.  Вопрос можно считать закрытым.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.