次の方法で共有


AppDomain.IsFullyTrusted プロパティ

定義

現在のアプリケーション ドメインに読み込まれたアセンブリが、完全に信頼された状態で実行されるかどうかを示す値を取得します。

public:
 property bool IsFullyTrusted { bool get(); };
public bool IsFullyTrusted { get; }
member this.IsFullyTrusted : bool
Public ReadOnly Property IsFullyTrusted As Boolean

プロパティ値

現在のアプリケーション ドメインに読み込まれたアセンブリが、完全に信頼された状態で実行される場合は true。それ以外の場合は false

次の例では、完全に IsFullyTrusted 信頼され、部分的に信頼されたアプリケーション ドメインを Assembly.IsFullyTrusted 持つ プロパティと プロパティを示します。 完全に信頼されたアプリケーション ドメインは、アプリケーションの既定のアプリケーション ドメインです。 部分的に信頼されたアプリケーション ドメインは、 メソッド のオーバーロードを AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) 使用して作成されます。

この例では、 Worker から MarshalByRefObject派生した クラスを使用するため、アプリケーション ドメインの境界を越えてマーシャリングできます。 この例では、既定の Worker アプリケーション ドメインに オブジェクトを作成します。 次に、 メソッドをTestIsFullyTrusted呼び出して、アプリケーション ドメインのプロパティ値と、アプリケーション ドメインに読み込まれる 2 つのアセンブリ (.NET Frameworkの一部である mscorlib)、およびサンプル アセンブリを表示します。 アプリケーション ドメインは完全に信頼されているため、両方のアセンブリが完全に信頼されます。

この例では、セキュリティで保護されたアプリケーション ドメインに別 Worker のオブジェクトを作成し、 メソッドを TestIsFullyTrusted 再度呼び出します。 Mscorlib は、部分的に信頼されたアプリケーション ドメインであっても常に信頼されますが、アセンブリ例は部分的に信頼されています。

using System;

namespace SimpleSandboxing
{
    public class Worker : MarshalByRefObject
    {
        static void Main()
        {
            Worker w = new Worker();
            w.TestIsFullyTrusted();

            AppDomain adSandbox = GetInternetSandbox();
            w = (Worker) adSandbox.CreateInstanceAndUnwrap(
                               typeof(Worker).Assembly.FullName,
                               typeof(Worker).FullName);
            w.TestIsFullyTrusted();
        }

        public void TestIsFullyTrusted()
        {
            AppDomain ad = AppDomain.CurrentDomain;
            Console.WriteLine("\r\nApplication domain '{0}': IsFullyTrusted = {1}",
                                        ad.FriendlyName, ad.IsFullyTrusted);

            Console.WriteLine("   IsFullyTrusted = {0} for the current assembly",
                             typeof(Worker).Assembly.IsFullyTrusted);

            Console.WriteLine("   IsFullyTrusted = {0} for mscorlib",
                                        typeof(int).Assembly.IsFullyTrusted);
        }

        // ------------ Helper method ---------------------------------------
        static AppDomain GetInternetSandbox()
        {
            // Create the permission set to grant to all assemblies.
            System.Security.Policy.Evidence hostEvidence = new System.Security.Policy.Evidence();
            hostEvidence.AddHostEvidence(new System.Security.Policy.Zone(
                                                         System.Security.SecurityZone.Internet));
            System.Security.PermissionSet pset =
                                System.Security.SecurityManager.GetStandardSandbox(hostEvidence);

            // Identify the folder to use for the sandbox.
            AppDomainSetup ads = new AppDomainSetup();
            ads.ApplicationBase = System.IO.Directory.GetCurrentDirectory();

            // Create the sandboxed application domain.
            return AppDomain.CreateDomain("Sandbox", hostEvidence, ads, pset, null);
        }
    }
}

/* This example produces output similar to the following:

Application domain 'Example.exe': IsFullyTrusted = True
   IsFullyTrusted = True for the current assembly
   IsFullyTrusted = True for mscorlib

Application domain 'Sandbox': IsFullyTrusted = False
   IsFullyTrusted = False for the current assembly
   IsFullyTrusted = True for mscorlib
 */
open System
open System.IO
open System.Security
open System.Security.Policy

type Worker() =
    inherit MarshalByRefObject()
    member _.TestIsFullyTrusted() =
        let ad = AppDomain.CurrentDomain
        printfn $"\nApplication domain '{ad.FriendlyName}': IsFullyTrusted = {ad.IsFullyTrusted}"

        printfn $"   IsFullyTrusted = {typeof<Worker>.Assembly.IsFullyTrusted} for the current assembly"

        printfn $"   IsFullyTrusted = {typeof<int>.Assembly.IsFullyTrusted} for mscorlib"

// ------------ Helper function ---------------------------------------
let getInternetSandbox () =
    // Create the permission set to grant to all assemblies.
    let hostEvidence = Evidence()
    hostEvidence.AddHostEvidence(Zone System.Security.SecurityZone.Internet)
    let pset = SecurityManager.GetStandardSandbox hostEvidence

    // Identify the folder to use for the sandbox.
    let ads = AppDomainSetup()
    ads.ApplicationBase <- Directory.GetCurrentDirectory()

    // Create the sandboxed application domain.
    AppDomain.CreateDomain("Sandbox", hostEvidence, ads, pset, null)

let w = Worker()
w.TestIsFullyTrusted()

let adSandbox = getInternetSandbox()
let w2 = 
    adSandbox.CreateInstanceAndUnwrap(typeof<Worker>.Assembly.FullName, typeof<Worker>.FullName) :?> Worker
w2.TestIsFullyTrusted()
(* This example produces output similar to the following:

Application domain 'Example.exe': IsFullyTrusted = True
   IsFullyTrusted = True for the current assembly
   IsFullyTrusted = True for mscorlib

Application domain 'Sandbox': IsFullyTrusted = False
   IsFullyTrusted = False for the current assembly
   IsFullyTrusted = True for mscorlib
 *)
Public Class Worker
    Inherits MarshalByRefObject
    
    Shared Sub Main()
 
        Dim w As New Worker()
        w.TestIsFullyTrusted()
        
        Dim adSandbox As AppDomain = GetInternetSandbox()
        w = CType(adSandbox.CreateInstanceAndUnwrap(
                            GetType(Worker).Assembly.FullName, 
                            GetType(Worker).FullName), 
                  Worker)
        w.TestIsFullyTrusted()
    
    End Sub 
    
    Public Sub TestIsFullyTrusted() 

        Dim ad As AppDomain = AppDomain.CurrentDomain
        Console.WriteLine(vbCrLf & "Application domain '{0}': IsFullyTrusted = {1}", 
                          ad.FriendlyName, ad.IsFullyTrusted)
        
        Console.WriteLine("   IsFullyTrusted = {0} for the current assembly", 
                          GetType(Worker).Assembly.IsFullyTrusted)
        
        Console.WriteLine("   IsFullyTrusted = {0} for mscorlib", 
                          GetType(Integer).Assembly.IsFullyTrusted)
    
    End Sub 
    
    ' ------------ Helper method ---------------------------------------
    Shared Function GetInternetSandbox() As AppDomain 

        ' Create the permission set to grant to all assemblies.
        Dim hostEvidence As New System.Security.Policy.Evidence()
        hostEvidence.AddHostEvidence(
                    New System.Security.Policy.Zone(System.Security.SecurityZone.Internet))
        Dim pset As System.Security.PermissionSet = 
                           System.Security.SecurityManager.GetStandardSandbox(hostEvidence)
        
        ' Identify the folder to use for the sandbox.
        Dim ads As New AppDomainSetup()
        ads.ApplicationBase = System.IO.Directory.GetCurrentDirectory()
        
        ' Create the sandboxed application domain.
        Return AppDomain.CreateDomain("Sandbox", hostEvidence, ads, pset, Nothing)
    
    End Function 
End Class 

' This example produces output similar to the following:
'
'Application domain 'Example.exe': IsFullyTrusted = True
'   IsFullyTrusted = True for the current assembly
'   IsFullyTrusted = True for mscorlib
'
'Application domain 'Sandbox': IsFullyTrusted = False
'   IsFullyTrusted = False for the current assembly
'   IsFullyTrusted = True for mscorlib
'

注釈

このメソッドは、デスクトップ上で実行されるアプリケーションの既定のアプリケーション ドメインに対して常に を返 true します。 アプリケーション ドメインに付与されるアクセス許可が完全信頼と同等でない限り、 メソッド オーバーロードを使用AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[])して作成されたサンドボックス アプリケーション ドメインに対して が返falseされます。

適用対象