Assembly.LoadFile 出错探索! dotnet 权限初探!

最近遇到一个问题,在使用  Assembly.LoadFile 报错, 错误的消息是 访问拒绝!

涉及到dotnet的权限问题,我以前没接触结.果现在被老比尔干了,我现在干干他!

使用工具 vs2005 Reflector

为了方便起见,我已经将mscorlib 反编译了. 将其在vs2005 中打开.

ok let's go!

 

Assembly.LoadFile  方法

 

Code

哈哈 这是我调用的 Assembly.LoadFile(DLLFile.ToString());

有一个东东 FileIOPermission  Permission 是么意思??

呵呵 似乎是它

再看看 nLoadFile  貌似 他才是关键

 

 

Code

 

哈哈 一个原生方法

 

由此可以看出 Assembly.LoadFile  ->nLoadFile  

那末权限检查到底在哪里那?

答案就在 FileIOPermission 和 [SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlEvidence)]

至于到底什么 不知道

那末如何解决这个问题那?

看全部打代码(太大了不贴了)

看LoadFrom 函数

 

 

Code

 

 好像没有看到权限检查呀!

在看看InternalLoadFrom 

 

 

 

Code

 呵呵 又是一大堆跳跳  InternalLoadFrom -> InternalLoad -> nLoad

最终 跳到

 

Code

 

 呵呵优势一个 原生方法

最终解决 LoadFrom 代替 LoadFile 

 

dotnet 的权限似乎 使用 某个类 或者 属性来控制的

 

posted on 2008-08-23 16:34  在路上(小马哥)  阅读(699)  评论(0)    收藏  举报

导航