2010-01-19 10 views
5

Estoy considerando escribir una aplicación en C# /. NET que alterará programáticamente un archivo XML en la computadora de un usuario y estoy tratando de determinar si Silverlight (y qué versiones, en qué modos) funcionará para esta tarea.¿Puede Silverlight cambiar un archivo en la computadora de un usuario local?

Aquí está el flujo de trabajo: selecciona

  • usuario archivo
  • aplicación modifica el archivo
  • archivo de aplicación guarda y sobrescribe archivo original

Es esto posible en Silverlight? De ser así, ¿en qué versiones y bajo qué condiciones?

+0

Espero que Silverlight no pueda entrometerse con mis archivos. – zneak

+0

Sé que Silverlight es ciego a sus archivos a menos que seleccione específicamente un archivo (que creo que tiene que ser a través de un cuadro de diálogo). Lo que me produce curiosidad es que, si el usuario elige dar permiso a la aplicación SL (si esto es posible), SL puede luego volver a escribir en la ubicación original a través de una transmisión IO. –

Respuesta

2

Algunas respuestas aquí se concentran en Almacenamiento aislado. Si ninguna otra aplicación necesita acceder a estos datos, quizás Storage Isolated sea la respuesta para usted. Este link es un blog que describe cómo se utiliza el almacenamiento aislado en pocas palabras.

Sospecho que posiblemente esto no es lo que quiere ya que el usuario tiene que seleccionar el archivo.

Ciertamente en SL3 puede hacer que el usuario seleccione el archivo y luego puede leerlo.

Sin embargo, para guardarlo de nuevo tendrá que mostrar un cuadro de diálogo "Guardar archivo" al usuario, para adquirir un File Stream en el que puede escribir.

En SL4 ejecutando OOB con privilegios elevados, puede guardar archivos como este directamente en la carpeta de usuarios como Mis documentos.

Editar

sólo para estar absolutamente claro, no se puede escribir en un archivo que se adquirieron mediante el OpenFileDialog sólo lectura, no se puede leer un archivo que ya adquirida mediante SaveFileDialog sólo escribir.

+0

Gracias por su respuesta detallada. Cuando dices 'Sin embargo, para guardarlo de nuevo tendrías que mostrar un cuadro de diálogo" Guardar archivo "al usuario, para adquirir un File Stream en el que puedas escribir. ¿Es posible en SL3 o requiere SL4? ? –

+0

Sí, salvo que esté calificado de otra manera, me refiero a la versión actual SL3. Puede mostrar un cuadro de diálogo Guardar desde una instancia en el navegador de SL3, el usuario elige el archivo y, como tal, le ha otorgado a su código el derecho de escribir en el archivo seleccionado como lo considere oportuno. OpenFileDialog da 'FileInfo' (s) en el que puede' OpenRead' pero no 'OpenWrite' mientras que SaveFileDialog da' FileInfo' (s) en el que puede 'OpenWrite' pero no' OpenRead'. – AnthonyWJones

+1

Ok. Creo que eso tiene sentido. Entonces, si quería modificar el archivo de un usuario, 1) le pediría al usuario el archivo, 2) modificaría el archivo en código, luego 3) le preguntaría al usuario dónde guardar el archivo. Si el usuario elige sobrescribir su archivo original, esa es su elección, pero el usuario aún tiene que decir dónde guardar el archivo. –

1

SL3 permite el acceso a un área de almacenamiento aislado, SL4 abre aún más el acceso de aplicaciones de confianza que les permite acceder a los archivos en MyDocs, etc. MyPictures

+0

¿podría ampliar eso y explicar cómo podría funcionar? Específicamente, ¿podré realizar mi flujo de trabajo en SL3 y bajo qué condiciones? –

3

El tiempo de ejecución de Silverlight opera dentro de un 'entorno limitado' de seguridad.

Puede acceder a los archivos desde el disco duro de las computadoras solo a través del cuadro de diálogo Abrir archivo. Puede leer y escribir desde Isolated Storage usando Silverlight 2 en adelante.

Viniendo en Silverlight 4 tendrá la posibilidad de acceder a los archivos de "directorios especiales", como Mis documentos, Mi música, Mis imágenes, etc. (http://weblogs.asp.net/nmarun/archive/2009/11/27/local-file-access-silverlight-4.aspx)

+0

¿La lectura y la escritura aplicarán cambios al archivo original al que se accede a través del cuadro de diálogo Abrir archivo? –

+0

Además, ¿a qué versión corresponde esto? –

1

aplicaciones de Silverlight puede no cambiar archivos arbitrarios en el usuario de computadora. Sin embargo, son capaces de almacenar archivos localmente utilizando almacenamiento aislado:

En .NET Framework, el almacenamiento aislado es un mecanismo de almacenamiento que permite a las aplicaciones de confianza parcial para guardar los datos en la máquina local sin violar ninguna política de seguridad establecer en la computadora. El almacenamiento aislado existe desde la primera versión de .NET Framework y es especialmente útil para los componentes descargados y parcialmente confiables que generalmente no tienen acceso a los mecanismos de E/S estándar. Sin embargo, a estas mismas aplicaciones generalmente se les concede el derecho de usar almacenamiento aislado. De esta forma, las aplicaciones provenientes de fuentes potencialmente no confiables aún pueden hacer algunas E/S de disco, aunque de forma controlada.

Usted puede leer más sobre esto en el siguiente artículo:

Silverlight and Local Storage

+0

Gracias por el enlace "Silverlight and Local Storage". Sin embargo, eso se aplica a la Versión 2.0 de Silverlight. Me pregunto si se ha hecho más trabajo desde entonces. –

+0

Aparentemente, Silverlight 4.0 presentará un 'SaveFileDialog' (http://msdn.microsoft.com/en-us/library/system.windows.controls.savefiledialog%28VS.95%29.aspx). Sin embargo, esto permite a los usuarios especificar un nombre de archivo local, las aplicaciones no pueden elegir la ubicación ellos mismos. –

1

El sistema operativo incorporado en el Archivo de diálogo/Guardar abierta permite Silverlight para acceder/modificar cualquier archivo que el usuario especifica al devolver una secuencia de archivos a la que tiene acceso la aplicación Silverlight.

Aparte de eso, la aplicación Silverlight tiene acceso a su propio almacenamiento aislado.

+0

a qué versión (s) aplica esto? –

+0

El cuadro de diálogo de archivo se aplica a V2.0 y posterior. Creo que el almacenamiento aislado se aplica a todas las versiones. – Aaron

Cuestiones relacionadas