appdomain可以限制在一个目录中吗?

我正在开发一个插件主机。 插件应该具有他们需要的尽可能少的信任,但是我希望插件可以读取和写入文件。

可以将加载程序集的AppDomain限制为只能访问一个目录进行读写吗?

还可以理解其他选项和方法,例如将文件数据从主机流式传输到插件(读取)以及从插件传输到主机(写入)的简单方法。

如果相关:我正在使用MAF基础设施插件。 http://msdn.microsoft.com/en-us/library/bb384200.aspx

namespace ConsoleApplication { #region Imports using System; using System.IO; using System.Security; using System.Security.Permissions; #endregion public class Plugin : MarshalByRefObject { public string TestRead(string path) { try { File.ReadAllBytes(path); return "Done"; } catch (SecurityException) { return "Access Denied"; } } } public class Program { static void Main(string[] args) { var setup = new AppDomainSetup(); setup.ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; var perm = new PermissionSet(PermissionState.None); perm.AddPermission( new SecurityPermission( SecurityPermissionFlag.Execution)); perm.AddPermission( new FileIOPermission( FileIOPermissionAccess.Read, "c:\\public\\")); var pluginDomain = AppDomain.CreateDomain("PluginDomain", null, setup, perm); var plugin = pluginDomain.CreateInstanceAndUnwrap( typeof(Plugin).Assembly.FullName, typeof(Plugin).FullName) as Plugin; Console.WriteLine(plugin.TestRead("c:\\public\\test.txt")); Console.WriteLine(plugin.TestRead("c:\\secret\\test.txt")); Console.ReadKey(); } } }