2009-04-28 11 views
5

Quel est le but de la pièce de code suivant ?:preuve Assemblée

object[] hostEvidence = {new Zone(SecurityZone.Internet)}; 
Evidence internetEvidence = new Evidence(hostEvidence, null); 
AppDomain myDomain = AppDomain.CreateDomain("MyDomain"); 
myDomain.ExecuteAssembly("SecondAssembly.exe", internetEvidence); 

Pour autant que je sais que le CLR automatiquement (Il demande de Windows pour elle) affecte la zone selon l'endroit où l'ensemble est courir depuis (machine locale, internet ect ...). Je devine que c'était censé diminuer les permissions pour l'assemblée mais quand nous avons deux évidences nous avons également deux groupes de code qui sont a sommé dans un niveau de politique donné.

Cordialement PK

Répondre

1

Selon le livre de base .NET Framework (je ne l'ai pas encore tout à fait mémorisé pour l'examen), la preuve est soit utilisateur spécifié (outil de configuration .NET) ou développeur spécifié. Ainsi, vous définissez explicitement la zone dont vous avez besoin.

Je ne suis pas au courant que le CLR attribue automatiquement des zones bien que je puisse me tromper.

+0

Le CLR n'assigne pas automatiquement les zones en tant que telles, puis les suppose en fonction de l'emplacement du fichier et de la politique de sécurité par défaut. C'est à dire. si j'exécute un fichier sur ma machine locale, il est supposé être entièrement approuvé, etc. – BinaryMisfit

+1

Il ne l'affecte pas mais il demande à Windows des informations sur la zone. – pkolodziej

+2

Voici l'article sur la façon dont CLR obtient la preuve de zone pour l'assemblage: http://blogs.msdn.com/shawnfa/archive/2006/05/12/596419.aspx – pkolodziej

0

Je m'attendrais à ce que la surcharge de la méthode ExecuteAssembly utilise la preuve fournie au lieu de assignant automatiquement de nouvelles preuves. Sinon, quel serait le but?