Question

J'ai une application qui se comporte bizarrement et, pour vérifier, j'aimerais voir dans quelle zone de sécurité elle s'exécute actuellement.

J'ai trouvé l'énumération System.Security.SecurityZone, mais je n'arrive pas à trouver quoi que ce soit qui retourne lequel de ces éléments est exécuté.

Quelqu'un a-t-il des conseils?

En gros, je veux savoir si mon application tourne dans MyComputer, Intranet, Internet, Untrusted, Trusted, etc.

Modifier: Voici la petite application de test que j'ai écrite pour trouver ce code, grâce à @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;
                }
            }
        }
    }
}
Était-ce utile?

La solution

Vous devez examiner les preuves CAS pour l'assemblage actuel;

this.GetType (). Assembly.Evidence

Assembly.Evidence est une propriété. objet Evidence . À partir de cela, vous pouvez énumérer les preuves et rechercher les zone qui apparaît en tant que < System.Security.Policy.Zone > élément.

Autres conseils

Dans .NET 3.5, vous pouvez simplifier le code avec LINQ:

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

À partir de .NET 4.0, vous disposez d'une GetHostEvidence méthode pratique:

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

Notez que les classes de preuves .NET 4.0 dérivent de la EvidenceBase classe de base.

HTH, Gy & # 246; rgy

Vous pouvez également utiliser

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

au lieu de

this.GetType().Assembly.Evidence
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top