私はsandobxを作成するための特別な方法で使用します。AppDomainのアクセス許可を変更する方法は?
internal static class Helper
{
public static AppDomain CreateSandbox()
{
Contract.Ensures(Contract.Result<AppDomain>() != null);
var platform = Assembly.GetExecutingAssembly();
var name = platform.FullName + ": Sandbox " + Guid.NewGuid();
var setup = new AppDomainSetup { ApplicationBase = platform.Location };
var permissions = new PermissionSet(PermissionState.None);
permissions.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read | FileIOPermissionAccess.PathDiscovery, platform.Location));
var sandbox = AppDomain.CreateDomain(name, null, setup, permissions);
Contract.Assume(sandbox != null);
return sandbox;
}
}
私が作成したサンドボックスを使用する場合、私はそれのパーミッションを変更したい:
sandbox = Security.Helper.CreateSandbox();
sandbox.SetupInformation.ApplicationBase = Path.GetDirectoryName(path);
sandbox.PermissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.Read | FileIOPermissionAccess.PathDiscovery, path));
をしかし、私はそれにアセンブリをロードするとき、私は例外を受け取ります:
" 'System.Security.Permissions.FileIOPermission、mscorlib、バージョン= 4.0.0.0、文化=中立、なPublicKeyToken = b77a5c561934e089' タイプの許可のための要求が失敗しました。"
AppDomainのアクセス許可を変更する方法作成後ですか?
は完全な信頼で実行されているサンドボックスを作成するコードですか?または少なくともFileIOPermission自体がありますか? – JRoughan
はい、実行中のサンドボックスを作成するコードは完全信頼です。 –