Silverlight 4 Beta – Confianza Elevada: Acceso al Sistema de Archivos
En un artículo anterior detallamos el nuevo modelo de Confianza en las aplicaciones de Silverlight 4: la Confianza Elevada. En este artículo usaremos este modo para poder acceder al sistema de archivos de la máquina del usuario sin necesidad de utilizar las cajas de diálogo OpenFileDialog o SaveFileDialog.
El proyecto
Para demostrar el acceso al sistema de archivos de la máquina del usuario crearemos una sencilla aplicación que muestre las imágenes de la carpeta “Mis Imágenes” en una lista y al hacer clic sobre cada una mostrar la imagen seleccionada.
Iniciaremos creando un nuevo proyecto de Silverlight 4 en Visual Studio .NET 2010 y lo nombraremos Demo.SL4.ConfianzaElevada.SistemaArchivos aceptando la opción predeterminada de crear un proyecto Web para probar la aplicación de Silverlight.
Además, necesitaremos configurar la aplicación para permitir la instalación Afuera del Navegador y será en la misma caja de diálogo de configuración en donde deberemos establecer el nivel de Confianza Elevada. En el artículo anterior detallamos cómo hacer esto.
Enumerador SpecialFolder
Una vez instalada la aplicación en la máquina del usuario la clave será obtener la ruta en donde está la carpeta “Mis Imágenes”. Esto es debido a que en la versión de Silverlight 4 Beta (la última versión al momento de crear este artículo) únicamente tendremos acceso a las carpetas del perfil del usuario (las carpetas Mi *) sin necesidad de las cajas de diálogo. En vez de establecer la ruta de manera manual que potencialmente podría variar entre diferentes equipos y obviamente entre diferentes plataformas también es buena idea utilizar el enumerador SpecialFolder, quien nos regresará la ruta física según el valor seleccionado. A continuación se muestra el código relacionado al evento Loaded de la aplicación en donde usamos el enumerador SpecialFolder en conjunto con el método GetFolderPath() de la clase Environment:
{
//Checamos si está ejecutando en Confianza Elevada
if (Application.Current.HasElevatedPermissions)
{
//Obtiene la ruta a la carpeta "Mis Imágenes"
string myPicturesPath = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
//Establece como fuente de datos la lista de archivos en la carpeta
//siempre y cuando sean JPG o PNG
pictureList.ItemsSource =
System.IO.Directory.EnumerateFiles(myPicturesPath).Where(f => f.EndsWith(".jpg") || f.EndsWith(".png"));
}
}
Es muy importante destacar la propiedad HasElevatedPermissions de la clase Application ya que esta propiedad nos indica ultimadamente si la aplicación está ejecutando en Confianza Elevada o no. Por tal motivo será buena idea encerrar la ejecución de código en el bloque if{}.
Si bien las únicas carpetas a las que tenemos acceso sin necesidad de utilizar OpenFileDialog y SaveFileDialog son aquellas del perfil del usuario, a través de las cajas de diálogo podemos seguir teniendo acceso a cualquier carpeta que el usuario indique. Incluso, en Confianza Elevada podemos obtener más información acerca de los archivos seleccionados a través de estas cajas de diálogo, por ejemplo, la ruta física completa del archivo en cuestión
El resultado de la aplicación es el siguiente:
Resumen
Las aplicaciones que ejecutan en Confianza Elevada tienen más funcionalidad, como por ejemplo el acceso al sistema de archivos de la máquina del usuario.
Sin usar las cajas de diálogo tradicionales OpenFileDialog y SaveFileDialog podemos acceder a las carpetas del perfil del usuario: Mis Imágenes, Mis Videos, Mi Música y Mis Documentos y potencialmente leer los archivos y su información relacionada.
Puedes descargar el código aquí
Puedes ver la demo en vivo aquí (requiere Silverlight 4 y ejecutar la aplicación Fuera del Navegador)
6 Responses to Silverlight 4 Beta – Confianza Elevada: Acceso al Sistema de Archivos
Leave a Reply Cancel reply
Recent Posts
- Final de Imagine Cup 2013 Venezuela
- Desarrollo de Aplicaciones en Windows Phone 8 y Windows 8–04 y 05 de Abril 2013 @ Caracas, Venezuela
- Desarrollo de Aplicaciones en Windows Phone y Windows 8–02 de Abril 2013 @ Fundación Polar | Caracas, Venezuela
- Desarrollo de Aplicaciones en Windows Phone y Windows 8–01 de Abril 2013 @ Wayra Venezuela
- Diplomado de desarrollo en Windows Phone 8 para toda Latinoamérica
Tags
adiestramiento blend 4 bogota capacitación caracas chile codigo colombia Comunidades conferencia costa rica curso entrenamiento evento Expression formación fundamentos La Liga Silverlight latam Mango mexico msdn mva MVP Noticias perú san jose Screencasts SharePoint Silverlight Silverlight 3 Silverlight 4 silverlight 5 silverlight tour taller Tips training venezuela Visual Studio 2010 Web Casts Windows 8 Windows Phone 7 Windows Phone 7.1 Windows Phone 8 XAMLCategories
- ASP.NET 4.0
- Bing
- BizTalk 2006
- Comunidades
- Conferencias
- Cultura
- Cursos
- Diplomado Windows Phone 7.1
- Eventos
- Expression
- Expression Blend
- General
- IE8
- Instrospecciones
- Juegos
- La Liga Silverlight
- Lenguajes
- Metro
- MetroLatam
- MIX 2009
- MIX 2010
- Música
- MVP
- Noticias
- Screencasts
- SharePoint
- Silverlight
- Silverlight 3
- Silverlight 4
- Silverlight 5
- Silverlight Tour Workshop
- Tips
- Uncategorized
- Visual Studio 2010
- Visual Studio 2011
- Web Casts
- Windows 7
- Windows 8
- Windows Azure
- Windows Phone 7
- Windows Phone 7.1
- Windows Phone 8
- Workflow Foundation
Archives
- April 2013
- March 2013
- February 2013
- December 2012
- November 2012
- October 2012
- September 2012
- July 2012
- June 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- February 2008
- December 2007
- November 2007




Que tal Rocky, buen post. Una pregunta, en la Mac tambien tienes acceso a algunas carpetas sin usar cuadros de dialogo al usar confianza elevada? Podemos user SpecialFolders para obtenerlas tambien?
Sí, también funciona en la Mac ya que se mapean a las carpetas del perfil del usuario como /users/rodrigo/Videos
[...] Ver el artículo completo aquí [...]
Excelente amigo, gracias por el post, una pregunta, si yo quiero leer datos de un archivo de excel seria de manera similar? he intentantado con la interoperabilidad COM sin exito alguno. Lo que pretendo hacer es leer el excel y pasar la informacion a un datagrid. gracias de antemano.
Sí, sería a través del API de COM de Excel para mayor facilidad
Gracias por tu pronta respuesta Rodrigo, el problema es que no logro saber como leer el excel, ya que la mayoria de los post que he visto traen como ejemplo la exportacion a excel (http://www.c-sharpcorner.com/UploadFile/pchandraker/1899/), el asunto es que utlizan datos de tipo “dynamic” y no estoy muy familiarizado con ellos. Otra de las cosas que lei, es que se debe conocer la API de excel y sabiendo de ella, utlizar los datos tipo dynamic para acceder a sus “metodos”. Te agradeceria que me orientaras un poco en este tema.