c# - 获取 .NET 应用程序的当前/事件安全区域?

标签 c# .net security cas security-zone

我有一个行为异常的应用程序,为了验证,我想看看它当前在哪个安全区域下运行。

我找到了 System.Security.SecurityZone 枚举,但似乎找不到任何可以返回我正在运行的枚举。

有人有什么建议吗?

基本上我想知道我的应用程序是否在我的电脑、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;
                }
            }
        }
    }
}

最佳答案

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

this.GetType().Assembly.Evidence

Assembly.Evidence是一个属性Evidence目的。从这里你可以enumerate the evidence并查找显示为 元素的区域。

关于c# - 获取 .NET 应用程序的当前/事件安全区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/239463/

相关文章:

c# - 在循环中或循环外实例化 Random

c# - C#为Elasticsearch嵌套:如何将更新 Elasticsearch 文档特定字段的查询转换为Nest?

c# - Azure AppInsight 日志信息不起作用

sql - 如何在 .NET/Sql Server 中在用户本地时间发送电子邮件?

asp.net-mvc - 在 ASP.NET MVC 中自定义授权

Swift 和 golang 编码 base64 给出不同的结果

c# - 将电话号码解析为其部分

c# - 从不同线程调用时,WCF Duplex 回调方法从不执行

ssl - 在数据库中使用 SSL 证书

c# - 如何在 swashbuckl asp.net core web api 上添加自定义 header