编程获取程序集的证据

来源:互联网 发布:开淘宝店要开通网银吗 编辑:程序博客网 时间:2024/04/30 01:28
/*一个简单的应用程序来提示用户加载到内存中的程序集的名字, * 枚举每一种形式的程序集证据,CLR为了确定把程序集加载到 * 哪个代码组,第一步就是读取加载的证据,之后就是查询和 * 代码组相关的权限集,来确定程序集可以做什么,更重要的 * 是不可以做什么。 * 证据只是程序集加载到内存中时从程序集(也就是承载程序集 * 的应用程序域)中获取的信息。主要证据类型包含有:应用程序、 * 程序散列码、发行者证书、站点、程序及强名、URL、区域。 */using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections;using System.Reflection;using System.Security.Policy;namespace 编程方式读取证据{    class Program    {        static void Main(string[] args)        {            bool isUserDone = false;            string userOption = "";            Assembly asm = null;            Console.WriteLine("Envidence viewer");            do            {                Console.Write("L (Load Assembly) or Q (Quit):");                userOption = Console.ReadLine();                switch (userOption)                {                    case "L":                        asm = LoadAssembly();                        if (asm!=null)                        {                            DisplayAsmEnvidence(asm);                        }                        break;                    case "Q":                        isUserDone = true;                        break;                    default:                        Console.WriteLine("I don't know what you want to do! Buddy");                        break;                }            } while (!isUserDone);                    }        public static Assembly  LoadAssembly()        {            Console.WriteLine("Enter path to assembly : ");            try            {                return Assembly.LoadFrom(Console.ReadLine());            }            catch (Exception e)            {                Console.WriteLine(e.Message);                return null;            }        }        public static void DisplayAsmEnvidence(Assembly asm)        {            //获取程序集的证据            Evidence e = asm.Evidence;            //枚举由主机提供的证据            IEnumerator iEnum = e.GetHostEnumerator();            //输出证据            while (iEnum.MoveNext())            {                Console.WriteLine("****Press enter to cointinue*****");                Console.ReadLine();                Console.WriteLine(iEnum.Current);            }        }    }}

0 0
原创粉丝点击