コード例 #1
0
        private static bool Create()
        {
            AppDomainSetup Setup = new AppDomainSetup
            {
                ApplicationName = "CBScriptContainer" + Guid.NewGuid().ToString("X") + "D",
                ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\"
            };
            PermissionSet permissions = new PermissionSet(PermissionState.Unrestricted);

            permissions.AddPermission(new EnvironmentPermission(EnvironmentPermissionAccess.Read, "USERNAME"));
            permissions.AddPermission(new FileIOPermission(FileIOPermissionAccess.AllAccess, Assembly.GetExecutingAssembly().Location));
            permissions.AddPermission(new ReflectionPermission(PermissionState.Unrestricted));
            permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
            permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.Infrastructure));
            permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.RemotingConfiguration));
            permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.SerializationFormatter));
            permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.UnmanagedCode));
            permissions.AddPermission(new UIPermission(PermissionState.Unrestricted));
            permissions.AddPermission(new WebPermission(NetworkAccess.Connect, new Regex("https?:\\/\\/(\\w+)\\.carrybuddy\\.net\\/.*")));
            Handle  = AppDomain.CreateDomain("ScriptContainer", null, Setup, permissions);
            Execute = (Executer)Activator.CreateInstanceFrom(Handle, Assembly.GetExecutingAssembly().Location, typeof(Executer).FullName).Unwrap();
            Execute.AttachToResolve(new ResolveEventHandler(Resolver));
            return(Execute != null && Handle != null);
        }