Я пытаюсь установить минимальные разрешения для песочницы AppDomain, чтобы загрузить сборку. Кажется, что обязательно иметь разрешение PathDiscovery для appBase и разрешение на чтение для загруженной сборки, но для зависимых сборок разрешение не требуется. Мои вопросы: зачем нам PathDiscovery? недостаточно ли доступа для чтения для каждой необходимой сборки? Почему только загруженной сборке требуется разрешение на чтение, а не зависимым?
Вот фрагмент кода, чтобы дать некоторый контекст:
AppDomainSetup setup = new AppDomainSetup
{
ApplicationName = "Name",
ApplicationBase = binFolder,
};
PermissionSet permissionSet = new PermissionSet(PermissionState.None);
permissionSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
// Mandatory. Why PathDiscovery is needed?
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.PathDiscovery, binFolder));
// Mandatory. Why Read is not also needed for all dependent assemblies?
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read, assemblyPath));
var domain = AppDomain.CreateDomain("Domain Name", null, setup, permissionSet);
domain.CreateInstanceFromAndUnwrap(assemblyPath, typeName);