gpt4 book ai didi

c# - 一个appdomain可以限制在一个目录吗?

转载 作者:行者123 更新时间:2023-12-02 17:50:08 25 4
gpt4 key购买 nike

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

是否可以限制将加载程序集的 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();
}
}
}

关于c# - 一个appdomain可以限制在一个目录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2869951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com