C# appdomain是否可以限制为一个目录?
我正在开发一个插件主机。插件应该有尽可能少的信任,因为他们需要,但我想有一个插件读写文件的可能性 是否可以将加载程序集的AppDomain限制为只能访问一个目录进行读写 其他的选项和方法也很受欢迎,比如从主机到插件(读取)和从插件到主机(写入)的简单方式 如果相关:我正在为插件使用MAF基础设施。C# appdomain是否可以限制为一个目录?,c#,plugins,appdomain,C#,Plugins,Appdomain,我正在开发一个插件主机。插件应该有尽可能少的信任,因为他们需要,但我想有一个插件读写文件的可能性 是否可以将加载程序集的AppDomain限制为只能访问一个目录进行读写 其他的选项和方法也很受欢迎,比如从主机到插件(读取)和从插件到主机(写入)的简单方式 如果相关:我正在为插件使用MAF基础设施。 你说的“C#中的appdomain”是什么意思?AppDomains是.NET框架的一部分,而不是C#的一部分。是的,我的意思是.NET,我只是太习惯C了,它们几乎等同于我:)至于重复的问题,很抱歉,
你说的“C#中的appdomain”是什么意思?AppDomains是.NET框架的一部分,而不是C#的一部分。是的,我的意思是.NET,我只是太习惯C了,它们几乎等同于我:)至于重复的问题,很抱歉,我在发布之前没有看到这个问题。这几乎是我所需要的,所以我可以适应它。
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();
}
}
}