Aracılığıyla paylaş


AppDomain.IsFullyTrusted Özellik

Tanım

Geçerli uygulama etki alanına yüklenen derlemelerin tam güvenle yürütüldüğünü gösteren bir değer alır.

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

Özellik Değeri

Yalnızca .NET Framework: true geçerli uygulama etki alanına yüklenen derlemeler tam güvenle yürütülürse; aksi takdirde, false.

.NET Core ve .NET 5+: true her durumda.

Örnekler

Aşağıdaki örnekte, tam olarak güvenilen ve Assembly.IsFullyTrusted kısmen güvenilen uygulama etki alanları ile özelliği ve özelliği gösterilmektedirIsFullyTrusted. Tam olarak güvenilen uygulama etki alanı, uygulamanın varsayılan uygulama etki alanıdır. Kısmen güvenilen uygulama etki alanı, yöntem aşırı yüklemesi kullanılarak AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) oluşturulur.

Örnek, uygulama etki alanı sınırları arasında sıralanması için öğesinden MarshalByRefObjecttüretilen bir Worker sınıf kullanır. Örnek, varsayılan uygulama etki alanında bir Worker nesne oluşturur. Ardından, uygulama etki alanının ve uygulama etki alanına yüklenen iki derlemenin özellik değerini görüntülemek için yöntemini çağırır TestIsFullyTrusted : .NET Framework'ün bir parçası olan mscorlib ve örnek derleme. Uygulama etki alanına tam olarak güvenildiğinden her iki derlemeye de tam olarak güvenilir.

Örnek, korumalı uygulama etki alanında başka bir Worker nesne oluşturur ve yöntemini yeniden çağırır TestIsFullyTrusted . Mscorlib, kısmen güvenilen bir uygulama etki alanında bile her zaman güvenilirdir, ancak örnek derlemeye kısmen güvenilir.

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
'

Açıklamalar

Yalnızca .NET Framework: Bu yöntem her zaman masaüstünde çalışan bir uygulamanın varsayılan uygulama etki alanı için döndürür true . Uygulama etki alanına verilen izinler tam güvene eşdeğer olmadığı sürece, yöntem aşırı yüklemesi kullanılarak AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) oluşturulan korumalı bir uygulama etki alanı için döndürürfalse.

Şunlara uygulanır