获取.NET应用程序的当前/活动安全区域?

ang*_*son 6 .net c# security cas security-zone

我有一个行为奇怪的应用程序,只是为了验证,我想看看它当前正在运行的安全区域.

我找到了System.Security.SecurityZone枚举,但似乎无法找到任何会返回我正在运行的内容.

有人有任何提示吗?

基本上我想知道我的应用程序是否在MyComputer,Intranet,Internet,Untrusted,Trusted等运行.


编辑:这是我编写的用于查找此代码的次要测试应用程序,感谢@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;
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

blo*_*art 6

您需要查看当前程序集的CAS证据;

this.GetType().Assembly.Evidence

Assembly.Evidence是一个属性Evidence对象.从中可以枚举证据并查找显示为<System.Security.Policy.Zone>元素的区域.