【问题标题】:Get current/active security zone of a .NET application?获取 .NET 应用程序的当前/活动安全区域?
【发布时间】:2008-10-27 09:57:29
【问题描述】:

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

我找到了 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;
                }
            }
        }
    }
}

【问题讨论】:

    标签: c# .net security cas security-zone


    【解决方案1】:

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

    this.GetType().Assembly.Evidence

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

    【讨论】:

    • 好心,谢谢,我将最终代码粘贴在这里以供将来参考。
    • 不客气。当然在现实生活中你不必这样做,你会提出 CAS 要求并采取相应的行动:)
    【解决方案2】:

    在 .NET 3.5 中,您可以使用 LINQ 简化代码:

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

    从 .NET 4.0 开始,您有一个方便的 GetHostEvidence 方法:

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

    请注意,来自 .NET 4.0 的证据类派生自 EvidenceBase 基类。

    HTH, 捷尔杰

    【讨论】:

      【解决方案3】:

      你也可以使用

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

      而不是

      this.GetType().Assembly.Evidence
      

      【讨论】:

      • Thread.CurrentThread.GetType() 返回与typeof(Thread) 相同的Type 实例,因此您正在检索Thread 类的程序集(mscorlib) 的证据,而不是开发人员的程序集。
      猜你喜欢
      • 2013-06-25
      • 2013-01-01
      • 1970-01-01
      • 2011-09-15
      • 2010-11-24
      • 2010-12-22
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多