2013-03-19 2 views
0

Je joue avec CAS dans Framework 2.0 (je sais que c'est obsolète).Pourquoi CAS 2.0 Framework ne fonctionne pas?

J'ai le code suivant, que j'essaye dur de planter. J'ai compilé projet 2.0 cadre:

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); 
     } 
    } 
    } 

Je copie des fichiers exe à un lecteur réseau, puis ouvrez « mscorcfg.msc » et d'évaluer l'ensemble du lecteur réseau - groupe de code est Machine\All_Code\LocalIntranet_Zone qui est prévu. Quand je l'exécute à partir du réseau tout fonctionne bien et je ne comprends pas!

Il est supposé lancer une exception car le code de LocalIntranet n'a pas l'autorisation d'exécuter du code non managé. Pourquoi ça marche?

enter image description here

Répondre

1

Si votre machine a 3.5 SP 1 installé, rappelez-vous que ce builds au-dessus de 2,0, et il était que le Service Pack qui ont changé exes courir à partir de partages réseau à l'exécution avec la pleine confiance.

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

Les applications gérées qui sont ouvertes à partir de partages réseau ont le même comportement que les applications natives en exécutant avec la pleine confiance.

+0

Intéressant. Alors peut-être 'mscorcfg.msc' n'a pas été changé après les changements de 3.5 SP1? – nikita

+0

@nikita - D'un [article de blog] (http://blogs.msdn.com/b/shawnfa/archive/2008/05/12/fulltrust-on-the-localintranet.aspx) sur le changement: "Le noyau de ce changement est une modification dans la façon dont nous assignons des preuves aux applications lancées en réseau.Quand nous voyons un .exe lancé directement à partir d'un partage réseau, plutôt que de donner cette preuve .exe Zone de LocalInranet, nous donnons plutôt la preuve .exe Zone de MyComputer " - la clé étant "lancée directement". Si vous chargez l'assembly via d'autres moyens (par exemple 'mscorcfg'), il obtient toujours LocalIntranet. –

+0

Alors c'est la réponse je suppose! Merci! – nikita

Questions connexes