2010-01-19 10 views
5

Considerando la possibilità di scrivere un'applicazione in C# /. NET che modificherà a livello di codice un file XML sul computer di un utente e cerco di determinare se Silverlight (e quali versioni, in quali modalità) funzionerà per questa attività.Silverlight è in grado di modificare un file sul computer di un utente locale?

Ecco il flusso di lavoro: seleziona

  • utente di file
  • applicazione modifica di file
  • applicazione salva il file, sovrascrivendo file originale

Questo è possibile in Silverlight? Se sì, in quali versioni ea quali condizioni?

+0

Spero che Silverlight non possa interferire con i miei file. – zneak

+0

So che Silverlight è cieco per i tuoi file a meno che tu non selezioni specificamente un file (che credo debba passare attraverso una finestra di dialogo). Quello di cui sono curioso è che, se l'utente decide di concedere l'autorizzazione per l'applicazione SL (se questo è persino possibile), SL può quindi scrivere nuovamente nella posizione originale attraverso un flusso IO. –

risposta

2

Alcune risposte qui si concentrano su Storage isolato. Se nessun'altra applicazione ha bisogno di accedere a questi dati, forse l'archiviazione isolata è la risposta per te. Questo link è un blog che descrive in che modo l'archiviazione isolata viene utilizzata in poche parole.

Sospetto che questo non sia ciò che si desidera poiché l'utente seleziona il file.

Certamente in SL3 è possibile che l'utente selezioni il file e quindi lo si possa leggere.

Tuttavia, per salvarlo di nuovo, è necessario mostrare all'utente una finestra di dialogo "Salva file" per acquisire un flusso di file a cui è possibile scrivere.

In SL4 con OOB con privilegi elevati è possibile salvare i file in questo modo direttamente nella cartella utenti come Documenti.

Modifica

solo per essere assolutamente chiaro, non si può scrivere in un file che è stata acquisita utilizzando il OpenFileDialog sola lettura, non è possibile leggere un file che, come acquisiti utilizzando SaveFileDialog solo Scrivi.

+0

Grazie per la tua risposta dettagliata. Quando dici 'Tuttavia per poterlo salvare di nuovo dovresti mostrare all'utente una finestra di dialogo" Salva file ", per acquisire un flusso di file su cui scrivere, è possibile in SL3 o richiede SL4 ? –

+0

Sì, se non diversamente qualificato, mi riferisco alla versione attuale SL3. È possibile visualizzare una finestra di dialogo di salvataggio da un'istanza del browser di SL3, l'utente sceglie il file e come tale ha concesso al codice il diritto di scrivere nel file selezionato come ritiene opportuno. OpenFileDialog fornisce 'FileInfo' su cui puoi' OpenRead' ma non 'OpenWrite' mentre SaveFileDialog fornisce' FileInfo' su cui puoi 'OpenWrite' ma non' OpenRead'. – AnthonyWJones

+1

Ok. Penso che abbia senso. Quindi, se volessi modificare il file di un utente, vorrei 1) chiedere all'utente il file, 2) modificare il file nel codice, quindi 3) chiedere all'utente dove salvare il file. Se l'utente sceglie di sovrascrivere il loro file originale, è la loro scelta, ma l'utente deve ancora dire dove salvare il file. –

1

SL3 consente l'accesso ad una zona di stoccaggio isolato, SL4 apre l'accesso ancora di più per le applicazioni di fiducia permettendo loro di accedere ai file in MyDocs, MyPictures ecc

+0

potresti spiegarlo e spiegare come potrebbe funzionare? Nello specifico, sarò in grado di realizzare il mio flusso di lavoro in SL3 e in quali condizioni? –

3

Il runtime silverlight opera all'interno di una "sandbox" di sicurezza.

È possibile accedere ai file dal disco rigido del computer solo tramite la finestra di dialogo Apri file. È possibile leggere e scrivere da Isolated Storage utilizzando Silverlight 2 e versioni successive.

Venendo in Silverlight 4 si avrà la possibilità di accedere ai file da "directory speciali", come Documenti, Musica, Immagini, ecc (http://weblogs.asp.net/nmarun/archive/2009/11/27/local-file-access-silverlight-4.aspx)

+0

La lettura e la scrittura applicano le modifiche al file originale a cui si accede tramite la finestra di dialogo Apri file? –

+0

Inoltre, a quale versione si applica? –

1

applicazioni Silverlight non possono cambiare file arbitrari sul dell'Utente computer. Tuttavia, essi sono in grado di memorizzare i file in locale utilizzando isolato bagagli:

In .NET Framework, l'archiviazione isolata è un meccanismo di archiviazione che consente alle applicazioni parzialmente attendibili per salvare i dati sulla macchina locale senza violare alcuna policy di sicurezza impostato sul computer. Lo storage isolato è presente sin dalla prima versione di .NET Framework ed è particolarmente utile per i componenti scaricati, parzialmente affidabili a cui normalmente non viene concesso l'accesso ai meccanismi di I/O standard. Queste stesse applicazioni, tuttavia, hanno solitamente il diritto di utilizzare l'archiviazione isolata. In questo modo, le applicazioni provenienti da fonti potenzialmente non attendibili possono comunque eseguire alcuni I/O su disco, anche se in modo controllato.

Si può leggere di più su questo nel seguente articolo:

Silverlight and Local Storage

+0

Grazie per il collegamento "Silverlight e archiviazione locale". Tuttavia, questo vale per la versione 2.0 di Silverlight. Mi chiedo se sia stato fatto più lavoro da allora. –

+0

Apparentemente, Silverlight 4.0 introdurrà un 'SaveFileDialog' (http://msdn.microsoft.com/en-us/library/system.windows.controls.savefiledialog%28VS.95%29.aspx). Tuttavia, questo consente agli utenti di specificare un nome di file locale, le applicazioni non sono autorizzati a scegliere la posizione stessa. –

1

Il sistema operativo integrato di file finestra di dialogo Apri/Salva consente Silverlight per accedere/modificare qualsiasi file che l'utente specifica restituendo un flusso di file a cui l'app Silverlight ha accesso.

Oltre a ciò, l'app Silverlight ha accesso alla propria memoria isolata.

+0

a quale versione (i) si applica? –

+0

La finestra di dialogo File si applica a V2.0 e versioni successive. Credo che Storage Isolato si applichi a tutte le versioni. – Aaron

Problemi correlati