Featured Posts

Silverlight 5 Ya DisponibleSilverlight 5 Ya Disponible El día de hoy 09 de Diciembre 2011 ha sido liberada la nueva versión de Silverlight 5.  Esta versión final es la 5.0.61118. ¿Qué es Silverlight? Silverlight es...

Readmore

Silverlight Tour–Actualizado a Silverlight 5 RTWSilverlight Tour–Actualizado a Silverlight 5... Tengo el gusto de anunciarles que el Curso que Da La Vuelta al Mundo, el famoso Silverlight Tour, ha sido actualizado a la versión final de Silverlight 5. El Silverlight...

Readmore

Nueva carrera en Microsoft Virtual Academy: Windows Phone 7.1 (Mango)Nueva carrera en Microsoft Virtual Academy: Windows... Tengo el gusto de darles a conocer la disponibilidad de una nueva carrera en el Microsoft Virtual Academy (MVA): La carrera de Windows Phone 7.1 Mango. Esta es la descripción...

Readmore

Nueva carrera en Microsoft Virtual Academy: Silverlight 4Nueva carrera en Microsoft Virtual Academy: Silverlight... ¿Eres estudiante de Microsoft Virtual Academy (MVA)? Tengo el gusto de anunciarles oficialmente el lanzamiento de la nueva carrera de Silverlight 4 para esta plataforma educativa. La...

Readmore

Curso gratuito de Introducción a Silverlight 4 – 2da. ParteCurso gratuito de Introducción a Silverlight... Tengo el gusto de informarles que ya está disponible la segunda parte del Curso gratuito de Introducción a Silverlight 4 en Español, el cual ahora consta de un total...

Readmore

Rodrigo Díaz Concha Rss

Silverlight 4 Beta – Confianza Elevada: Acceso al Sistema de Archivos

Posted on : 08-01-2010 | By : Rodrigo | In : Silverlight 4

Tags: , ,

6

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:

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    //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:

image 

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)