Pregunta

Tengo una aplicación que se comporta de manera extraña, y solo para verificar, me gustaría ver en qué zona de seguridad se está ejecutando actualmente.

He encontrado la enumeración System.Security.SecurityZone, pero parece que no puedo encontrar nada que devuelva con cuál de estos estoy ejecutando.

¿Alguien tiene algún consejo?

Básicamente quiero saber si mi aplicación se está ejecutando en MyComputer, Intranet, Internet, No confiable, Trusted, etc.


Editar: Aquí está la aplicación de prueba menor que escribí para encontrar este código, gracias a @blowdart .

using System;
using System.Reflection;

namespace zone_check
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(".NET version: " + Environment.Version);
            foreach (Object ev in Assembly.GetExecutingAssembly().Evidence)
            {
                if (ev is System.Security.Policy.Zone)
                {
                    System.Security.Policy.Zone zone = (System.Security.Policy.Zone)ev;
                    Console.WriteLine("Security zone: " + zone.SecurityZone);
                    break;
                }
            }
        }
    }
}
¿Fue útil?

Solución

Debe mirar la evidencia de CAS para la asamblea actual;

this.GetType (). Assembly.Evidence

Assembly.Evidence es una propiedad Evidencia objeto. A partir de esto, puede enumerar la evidencia y buscar el zona que aparece como < System.Security.Policy.Zone > elemento.

Otros consejos

En .NET 3.5 puede simplificar el código con LINQ:

Zone z = a.Evidence.OfType<Zone>().First();

Desde .NET 4.0 tiene un método GetHostEvidence conveniente:

Zone z = Assembly.GetExecutingAssembly().Evidence.GetHostEvidence<Zone>();

Tenga en cuenta que de .NET 4.0 las clases de evidencia derivan de la EvidenceBase clase base.

HTH, Gy & # 246; rgy

También puedes usar

Evidence e = Thread.CurrentThread.GetType().Assembly.Evidence;

en lugar de

this.GetType().Assembly.Evidence
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top