Ler em inglês

Compartilhar via


AppDomain.IsFullyTrusted Propriedade

Definição

Obtém um valor que indica se os assemblies carregados no domínio de aplicativo atual são executados com confiança total.

C#
public bool IsFullyTrusted { get; }

Valor da propriedade

Boolean

true se os assemblies carregados no domínio de aplicativo atual forem executados com confiança total; caso contrário, false.

Exemplos

O exemplo a seguir demonstra a IsFullyTrusted propriedade e a Assembly.IsFullyTrusted propriedade com domínios de aplicativo totalmente confiáveis e parcialmente confiáveis. O domínio de aplicativo totalmente confiável é o domínio de aplicativo padrão para o aplicativo. O domínio de aplicativo parcialmente confiável é criado usando a sobrecarga do AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) método.

O exemplo usa uma Worker classe que deriva de, portanto, ela pode ser marshalada entre os limites do domínio do MarshalByRefObjectaplicativo. O exemplo cria um Worker objeto no domínio de aplicativo padrão. Em seguida, ele chama o TestIsFullyTrusted método para exibir o valor da propriedade para o domínio do aplicativo e para dois assemblies que são carregados no domínio do aplicativo: mscorlib, que faz parte do .NET Framework e o assembly de exemplo. O domínio do aplicativo é totalmente confiável, portanto, ambos os assemblies são totalmente confiáveis.

O exemplo cria outro Worker objeto em um domínio de aplicativo em área restrita e chama novamente o TestIsFullyTrusted método. Mscorlib é sempre confiável, mesmo em um domínio de aplicativo parcialmente confiável, mas o assembly de exemplo é parcialmente confiável.

C#
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
 */

Comentários

Esse método sempre retorna true para o domínio de aplicativo padrão de um aplicativo executado na área de trabalho. Ele retorna false para um domínio de aplicativo em área restrita que foi criado usando a sobrecarga do AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]) método, a menos que as permissões concedidas ao domínio do aplicativo sejam equivalentes à confiança total.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1