2013-03-19 44 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