Можно ли загрузить несколько сборок в новый домен приложений и применить разные PermissionSet
к каждой?
Скажем, разрешить одной из сборок выполнять запись на диск, предоставив ей неограниченную FileIOPermission
и отказав в таком разрешении другим (и).
Если это возможно. Как?
Обновление
P.S. Я создаю экземпляры типов из DLL, не выполняющих exe, поэтому я использую Load
и CreateInstanceAndUnwrap
вместо ExecuteAssembly
.
Обновление
Я пытался (и не смог) предоставить подтверждение методом load со следующим кодом:
Dim domain As AppDomain = AppDomain.CreateDomain("AssembliesDomain")
Dim protectedSet As New PermissionSet(PermissionState.None)
protectedSet.AddPermission(New SecurityPermission(SecurityPermissionFlag.Execution))
protectedSet.AddPermission(New IsolatedStorageFilePermission(PermissionState.Unrestricted))
protectedSet.PermitOnly()
domain.Load(protectedAssembly, New Evidence(Nothing, {protectedSet}))
domain.Load(unprotectedAssembly, New Evidence(Nothing, {protectedSet}))
Console.WriteLine(domain.CreateInstanceAndUnwrap(protectedAssembly, protectedAssembly & ".Actions").Sum(1, 2))
Console.WriteLine(domain.CreateInstanceAndUnwrap(unprotectedAssembly, unprotectedAssembly & ".Actions").Sum(1, 2))
Console.ReadLine()