2009-04-28 13 views
5

¿Cuál es el propósito de la siguiente pieza de código ?:Asamblea Evidencia

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

Por lo que yo sé el CLR automáticamente (Se pide de Windows para ello) asigna la Zona dependiendo de donde el conjunto se encuentra ejecutar desde (máquina local, ect de internet ...). Supongo que fue para disminuir los permisos para el ensamblado, pero cuando tenemos dos evidencias, también tenemos dos grupos de códigos que son sumados a dentro de un nivel de política determinado.

Saludos cordiales PK

Respuesta

1

Según el libro bases de .NET Framework (no he todavía bastante memorizado para el examen), la evidencia es o usuario especificado (Herramienta de configuración de .NET) o desarrollador especificado. Así que de esta manera estás definiendo explícitamente la Zona que necesitas.

No estoy al tanto de que CLR asigne zonas automáticamente aunque podría estar equivocado.

+0

El CLR no asigna zonas automáticamente como tales, sino que las asume en función de la ubicación del archivo y la política de seguridad predeterminada. Es decir. si ejecuta un archivo en mi máquina local, se supone que es totalmente confiable, etc. – BinaryMisfit

+1

No asigna, pero le pide a Windows información de la Zona. – pkolodziej

+2

Aquí está el artículo sobre cómo CLR obtiene la evidencia de la zona para el ensamblaje: http://blogs.msdn.com/shawnfa/archive/2006/05/12/596419.aspx – pkolodziej

0

Supongo que esta sobrecarga del método ExecuteAssembly utiliza la evidencia provista en lugar de que asigna automáticamente nueva evidencia. De lo contrario, ¿cuál sería el punto?

Cuestiones relacionadas