AppDomains とセキュリティ ポリシーを理解しようとしていますが、問題があります。
Mono が許可に従っていないようです。AppDomain をサンドボックス化しようとしています。
.NET を使用すると、期待どおりに動作します。権限がまったく設定されていないため、セキュリティ権限エラーが発生します。
Mono では、これは行われません。Mono-2.6 と Mono-2.10.8 の両方を試しましたが、mono はエラーなしでプログラムを実行します。
.NET と mono の両方に使用する 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;
}
}
}
私がここでやっていることに本質的に何か問題がありますか?