0

我正在使用框架 2.0 中的 CAS(我知道它已经过时了)。

我有以下代码,我正在努力崩溃。我在 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 的代码没有运行非托管代码的权限。为什么它有效?

在此处输入图像描述

4

1 回答 1

1

如果您的机器安装了 3.5 SP 1,请记住它是在 2.0 之上构建的,并且正是该 Service Pack 将 exe 从网络共享运行切换为以完全信任运行。

来自.NET Framework 版本 3.5 SP 1 中的新增功能

通过完全信任运行,从网络共享打开的托管应用程序具有与本机应用程序相同的行为。

于 2013-03-19T10:44:54.020 回答