ámbito visual usuario usar studio sistema elemento declarado configuración configuracion con archivo app aplicaciones admite actual .net assemblies sandbox

visual - Cargando ensamblajes desde una aplicación.Net en un ''entorno de recinto de seguridad''



no se ha declarado el elemento configuration (3)

Lo que estás buscando hacer es básicamente ejecutar Assemblies en un Dominio de Aplicación separado. Consulte esta página en MSDN para obtener un buen punto de partida. En realidad, es bastante al este hacer:

http://msdn.microsoft.com/en-us/library/ms173139(VS.80).aspx

Actualmente estoy desarrollando una aplicación en la que un usuario elegirá dinámicamente dlls y la aplicación ejecutará algunos de los métodos en esa dll. ( Si sigues el primer enlace, verás que estoy desarrollando una especie de aplicación de juego Robocode usando .Net Framework ).

Por ejemplo, cuando comienza la batalla, se run método de run de la dll.

Como lo que se especificó en el método de ejecución se ejecutará, hay bastantes restricciones de seguridad que se deben aplicar.

Como por ejemplo, si el usuario que programó el dll, en lugar de usar solo los métodos que son aplicables desde la interfaz (métodos que usa el robot para caminar y disparar, etc.), invoca métodos que recuperarán archivos e incluso eliminarán archivos del disco duro ... y cuando otro usuario carga esa dll en su computadora, esos métodos serán invocados en su computadora y sus archivos serán modificados por este código malicioso.

Por lo tanto, tengo que hacer de alguna manera que esta aplicación se ejecute desde una especie de entorno de espacio aislado de manera que cualquiera sea el método invocado, no afectará el disco duro de la computadora en la que se abre el dll.

¿Alguna idea sobre cómo debería comenzar a hacer esto?

Aquí hay un ejemplo de cómo estoy cargando estos dlls e invocando sus métodos:

for (int i = 0; i < robotList.Count; i++) { IRunnable o = robotList[i]; new Thread(delegate() { o.run(); }).Start(); }


Normalmente, puedes vivir con

AppDomain newDomain = AppDomain.CreateDomain(name); Assembly asm = newDomain.Load(System.IO.File.ReadAllBytes(name));

Pero un punto interesante es que el método AppDomain.Load cargará el ensamblaje al nuevo dominio de la aplicación, así como al dominio actual.

Una solución más elegante es usar el espacio de nombres System.AddIn en 3.5. - http://msdn.microsoft.com/en-us/magazine/cc163476.aspx

Entonces, puedes especificar el nivel de confianza para tu complemento, usando AddinSecurityLevel como

//Activate the selected AddInToken in a new //application domain with the Internet trust level. Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);

Consulte http://msdn.microsoft.com/en-us/library/bb355219.aspx para obtener detalles.