2012-06-06 18 views
7

Sto provando a creare un dominio app sandboxed. Per raggiungere questo obiettivo, sto usando il AppDomain.CreateDomain, dando il percorso della DLL per essere sandbox..net 4 parziale considera un assembly da GAC ​​

Tuttavia, ho notato che se quella DLL è nel GAC, quindi la DLL è completamente attendibile, quindi se ci sarà un PermissionSet.Assert lì, può ricevere accesso senza restrizioni.

Così, mi chiedevo se esiste un modo per entrambi

  1. forza il DLL per caricare dal percorso, e non dal GAC, così sarà parzialmente attendibile.
  2. oppure - contrassegnare una determinata DLL nel GAC per essere parziale attendibile.

Grazie!

risposta

1

Se entrambi gli assembly sono firmati, il CLR utilizzerà quello nel GAC. Se lasci quello nel percorso di destinazione senza segno, il CLR userà quello.

Se questa non è un'opzione, è necessario utilizzare uno degli override di CreateDomain in cui è possibile definire il set di autorizzazioni di cui avrà bisogno l'assemblaggio. Ulteriori informazioni sull'override sono disponibili qui: http://msdn.microsoft.com/en-us/library/ms130766.aspx.

Un esempio di utilizzo, come preso da http://davedewinter.com/2009/05/22/how-to-host-a-partial-trust-sandbox/ ...

static void RunInPartialTrust() 
{ 
    AppDomainSetup setup = new AppDomainSetup 
    { 
     ApplicationBase = Environment.CurrentDirectory 
    }; 

    PermissionSet permissions = new PermissionSet(null); 
    permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution)); 
    permissions.AddPermission(new ReflectionPermission(ReflectionPermissionFlag.RestrictedMemberAccess)); 
    AppDomain appDomain = AppDomain.CreateDomain(
     "Partial Trust AppDomain", 
     null, 
     setup, 
     permissions 
    ); 

    Program p = (Program)appDomain.CreateInstanceAndUnwrap(
     typeof(Program).Assembly.FullName, 
     typeof(Program).FullName 
    ); 

    p.PartialTrustMain(); 
} 
+0

Il davewinter (http://davedewinter.com/2009/05/22/how-to-host-a-partial-trust -sandbox /) link non è più accessibile. C'è uno specchio per il link? – Oli4

Problemi correlati