2

我正在尝试了解 AppDomains - 和安全策略,但是我遇到了问题。

Mono 似乎没有服从我的权限,我正在尝试对 AppDomain 进行沙箱处理。

使用 .NET 它按预期运行 - 我收到安全权限错误,因为我完全没有设置权限。

在 Mono 下,它不会这样做。我尝试了 Mono-2.6 和 Mono-2.10.8,mono 只是运行程序而没有任何错误。

我用于 .NET 和单声道的 C# 代码:

namespace AppDomainTest
{
    class Program
    {
        private static AppDomain _domain;
        static void Main(string[] args)
        {
            AppDomainSetup info = new AppDomainSetup
            {
                ApplicationName = "AppDomainTest",
                ApplicationBase = Environment.CurrentDirectory,
            };


            PermissionSet permSet = new PermissionSet(PermissionState.None);
            //permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
            // permSet.AddPermission(new FileIOPermission(PermissionState.Unrestricted));


            _domain = AppDomain.CreateDomain("TestDomain", null, info, permSet);

            TestObj o = (TestObj)_domain.CreateInstanceAndUnwrap(typeof(TestObj).Assembly.FullName, "AppDomainTest.TestObj");

            Console.WriteLine(o.GetDomainName());

        }
    }


    public class TestObj : MarshalByRefObject
    {
        public string GetDomainName()
        {
            return AppDomain.CurrentDomain.FriendlyName;
        }
    }
}

我在这里做的事情有什么本质上的问题吗?

4

1 回答 1

2

Mono 没有完全实现代码访问安全,

http://www.mono-project.com/Todo

http://tirania.org/blog/archive/2012/Apr-04.html

所以你不应该期望它在这方面像 .NET 一样工作。

于 2012-04-24T04:34:28.033 回答