2013-03-19 43 views
0

我在Framework 2.0中玩CAS(我知道它已经过时了)。为什么CAS 2.0框架不起作用?

我有以下代码,我试图很难崩溃。我编译项目2.0框架:

using System; 
using System.Security; 
using System.Security.Permissions; 

namespace Authenticode 
{ 
    class Program 
    { 
     public static void DoSthmUnmanaged() 
     { 
      SecurityPermission perm = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode); 
      perm.Demand(); 
     } 

     public static void Main(string[] args) 
     { 
       Program.DoSthmUnmanaged(); 

       Console.Write("Press any key to continue . . . "); 
       Console.ReadKey(true); 
     } 
    } 
    } 

exe文件复制到网络驱动器,然后打开“mscorcfg.msc”以及评估从网络驱动器部件 - 代码组是Machine\All_Code\LocalIntranet_Zone预计。当我从网络执行它时,一切正常,我不明白!

它应该引发异常,因为来自LocalIntranet的代码没有运行非托管代码的权限。它为什么有效?

enter image description here

回答

1

如果你的机器有3.5 SP 1安装,记住,建立在2.0之上,它是服务包交换的EXE文件从网络共享中运行以完全信任运行。

What's New in the .NET Framework Version 3.5 SP 1

正在从网络共享中打开

托管应用程序必须由具有完全信任运行相同的行为,本机应用程序。

+0

有趣。那么也许'mscorcfg.msc'在3.5 SP1更改后没有更改? – nikita 2013-03-19 10:53:15

+0

@nikita - 从[博客文章](http://blogs.msdn.com/b/shawnfa/archive/2008/05/12/fulltrust-on-the-localintranet.aspx)了解更改内容:“核心这种改变是对我们如何将证据分配给网络启动的应用程序的一种修改当我们看到一个.exe直接从网络共享中启动,而不是给出Local.exe的区域证据时,我们给出.exe区域证据MyComputer “。 - 关键是“直接启动”。如果通过其他方式加载程序集(例如'mscorcfg'),它仍然会获得LocalIntranet。 – 2013-03-19 11:00:00

+0

然后这就是我想的答案!谢谢! – nikita 2013-03-19 11:02:40