2012-06-06 19 views
7

Próbuję utworzyć domenę aplikacji piaskownicy. Aby to osiągnąć, używam AppDomain.CreateDomain, podając ścieżkę do biblioteki DLL, która ma być piaskownicą..net 4 częściowe zaufanie zestaw z GAC

Jednak zauważyłem, że jeśli ta biblioteka DLL znajduje się w GAC, to biblioteka DLL jest w pełni zaufana, więc jeśli będzie tam PermissionSet.Assert, może ona uzyskać nieograniczony dostęp.

Tak, zastanawiałem się, czy istnieje sposób, aby zarówno

  1. siła DLL załadować ze ścieżki, a nie od GAC, co będzie częściowo zaufanym.
  2. lub - oznaczyć określoną bibliotekę DLL w GAC, aby uzyskać częściowe zaufanie.

Dzięki!

Odpowiedz

1

Jeśli oba zespoły są w pełni podpisane, wówczas CLR będzie używał tego w GAC. Jeśli pozostawisz ten znak na docelowej ścieżce bez znaku, CLR użyje go zamiast tego.

Jeśli nie jest to opcja, należy użyć nadpisania CreateDomain, w którym można zdefiniować zestaw uprawnień wymagany przez zespół. Więcej informacji na temat zastąpienia można znaleźć tutaj: http://msdn.microsoft.com/en-us/library/ms130766.aspx.

Przykładem wykorzystania jako pobranej z 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

davewinter (http://davedewinter.com/2009/05/22/how-to-host-a-partial-trust -sandbox /) nie jest już dostępny. Czy istnieje połączenie z lustrem? – Oli4