私は .NET の学生で、現在アプリケーション ドメインについて学んでいます。次のサンプル コードが提供されました (.NET 3.5 用)。予想どおり、SecurityException がスローされます。注: TestApp.exe はプロジェクトの参照として追加されます。
Dim file As String = "TestApp.exe"
Dim hostEvidence As Object() = {New Zone(SecurityZone.Internet)}
Dim appDomainEvidence As Evidence = New Evidence(hostEvidence, Nothing)
Dim d As AppDomain = AppDomain.CreateDomain("MyDomain", appDomainEvidence)
d.ExecuteAssembly(file)
これを .NET 4.0 の VS2010 で実行しようとすると、問題が発生します。最初に警告が表示されます
'Public Sub New(hostEvidence() As Object, assemblyEvidence() As Object)' は廃止されました: 'このコンストラクタは廃止されました。代わりに EvidenceBase の配列を取るコンストラクタを使用してください。
hostEvidence のタイプを EvidenceBase() に変更すると、警告はなくなりました。ただし、アプリケーションを実行しようとすると、エラーが発生します。
このメソッドは、.NET Framework によって廃止された CAS ポリシーを暗黙的に使用します。互換性の理由で CAS ポリシーを有効にするには、NetFx40_LegacySecurityPolicy 構成スイッチを使用してください。詳細については、http: //go.microsoft.com/fwlink/?LinkID=155570を参照してください。
ページを表示し、 「方法: サンドボックスで部分的に信頼されたコードを実行する」へのリンクをたどり、http://blogs.msdn.com/shawnfa/archive/2009/05/27/coding-with-security-policy-を読みました。 in-net-4-0-implicit-uses-of-cas-policy.aspxしかし、これをすべて理解するのに苦労しています。
MSDN のコード例は、私が現在持っているものと比較して非常に大きいため、コードを変更して、他のものを追加しなくても機能するように助けていただければ幸いです。