ファイル システムへの読み取り専用アクセス権を持つサンドボックス アプリケーション ドメインを作成しようとしています。これを行うために私が書いたコードは
var ps = new PermissionSet(PermissionState.None);
ps.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
var f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
ps.AddPermission(f);
AppDomain domain = AppDomain.CreateDomain("MyDomain",
null,
new AppDomainSetup { ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) },
ps
);
string pathToDll = @"c:\temp\test.dll";
string thirdPartyFullName = "MyTest.Test";
IPlugin myObject = (IPlugin)domain.CreateInstanceFromAndUnwrap(pathToDll, thirdPartyFullName);
この例外で最後の行でエラーが発生することを除いて、ほとんど機能します
タイプ 'System.Security.Permissions.FileIOPermission、mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' のアクセス許可の要求に失敗しました。
アプリ ドメインの FileIOPermission をフル アクセスに変更すると、問題なく動作します。ファイルシステムへの読み取りアクセスのみが必要であると言うために、アプリケーションドメインにロードしているアセンブリで変更する必要があるものはありますか?
私は.Net 4.0を使用しています。