/*一个简单的应用程序来提示用户加载到内存中的程序集的名字, * 枚举每一种形式的程序集证据,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); } } } }
编程获取程序集的证据
猜你喜欢
转载自blog.csdn.net/yinshuli2008/article/details/50417221
今日推荐
周排行