Freigeben über


AppDomain.IsFullyTrusted Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob in die aktuelle Anwendungsdomäne geladene Assemblys mit vollständiger Vertrauenswürdigkeit ausgeführt werden.

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

Eigenschaftswert

true, wenn in die aktuelle Anwendungsdomäne geladene Assemblys mit voller Vertrauenswürdigkeit ausgeführt werden, andernfalls false.

Beispiele

Das folgende Beispiel veranschaulicht die IsFullyTrusted Eigenschaft und die Assembly.IsFullyTrusted Eigenschaft mit vollständig vertrauenswürdigen und teilweise vertrauenswürdigen Anwendungsdomänen. Die voll vertrauenswürdige Anwendungsdomäne ist die Standardanwendungsdomäne für die Anwendung. Die teilweise vertrauenswürdige Anwendungsdomäne wird mithilfe der AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) Methodenüberladung erstellt.

Im Beispiel wird eine Worker Klasse verwendet, die von MarshalByRefObjectabgeleitet wird, damit sie über Anwendungsdomänengrenzen hinweg ge marshallt werden kann. Im Beispiel wird ein Worker Objekt in der Standardanwendungsdomäne erstellt. Anschließend wird die TestIsFullyTrusted -Methode aufgerufen, um den Eigenschaftswert für die Anwendungsdomäne und für zwei Assemblys anzuzeigen, die in die Anwendungsdomäne geladen werden: mscorlib, die Teil der .NET Framework ist, und die Beispielassembly. Die Anwendungsdomäne ist vollständig vertrauenswürdig, sodass beide Assemblys vollständig vertrauenswürdig sind.

Im Beispiel wird ein weiteres Worker Objekt in einer Sandkastenanwendungsdomäne erstellt und die TestIsFullyTrusted -Methode erneut aufgerufen. Mscorlib ist immer vertrauenswürdig, auch in einer teilweise vertrauenswürdigen Anwendungsdomäne, aber die Beispielassembly ist teilweise vertrauenswürdig.

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
'

Hinweise

Diese Methode gibt immer für die Standardanwendungsdomäne einer Anwendung zurück true , die auf dem Desktop ausgeführt wird. Es wird für eine Sandkastenanwendungsdomäne zurückgegeben false , die mithilfe der AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) Methodenüberladung erstellt wurde, es sei denn, die Berechtigungen, die der Anwendungsdomäne erteilt werden, entsprechen voll vertrauenswürdig.

Gilt für: