Frage

Ich habe eine Anwendung, die seltsam verhält, und nur, um zu überprüfen, ich mag die Sicherheitszone sehen, daß es derzeit ausgeführt wird.

Ich habe die System.Security.SecurityZone Enum gefunden, aber kann nicht scheinen, etwas zu finden, welche von diesen zurückkehren werde ich unter renne.

Hat jemand irgendwelche Tipps haben?

Grundsätzlich möchte ich herausfinden, ob meine Anwendung in MyComputer läuft, Intranet, Internet, nicht vertrauenswürdig, vertrauenswürdige, etc.


Edit: Hier ist die Moll-Test-app Ich schrieb diesen Code zu finden, dank @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;
                }
            }
        }
    }
}
War es hilfreich?

Lösung

Sie müssen sich auf dem CAS-Beweis für die aktuelle Assembly suchen;

this.GetType (). Assembly.Evidence

Assembly.Evidence ist eine Eigenschaft, Evidence Objekt. Daraus können Sie die Beweise aufzuzählen und suchen Sie nach der Zone, die als Element angezeigt wird.

Andere Tipps

In .NET 3.5 Sie den Code mit LINQ vereinfachen können:

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

Von .NET 4.0 Sie haben eine bequeme GetHostEvidence Methode:

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

Beachten Sie, dass von .NET 4.0 Beweisen Klassen aus der EvidenceBase Basisklasse abgeleitet werden.

HTH, György

Sie können auch verwenden

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

statt

this.GetType().Assembly.Evidence
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top