Domanda

Sto lavorando su un'app metropolitana che mostra il contenuto di una determinata cartella in un controllo di ListView. La SM ha deciso che gli sviluppatori non hanno bisogno della classe System.io.Directory e lo rimosse interamente dal framework.

Sto cercando un sostituto per enumerare i file in C # in un'app in stile metropolitana.Ho controllato tutti i campioni di enumerazione forniti dalla SM e sembrano tutti immergere solo le librerie di Windows utilizzando la classe KnownFolders, qualcosa del genere come:

StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
.

e chiamando i metodi GetFilesAsync() o GetFoldersAsync() a seconda delle esigenze.Questi sono tutti oro se volessi enumerare solo all'interno delle immagini o della biblioteca musicale.Comunque sto cercando di enumerare i file sulle directory che non sono incluse in una biblioteca.

Qualcuno sa come è possibile in WinRt ???

È stato utile?

Soluzione

Sei, per progettazione, estremamente limitato in questo settore per le app della metropolitana.L'idea è che un'app metropolitana è data solo l'accesso a quelle cose che si fida di accedere, quindi è possibile:

    .
  1. Accedi alla memoria locale, specifica per la tua applicazione
  2. Accedi a una manciata di ben noti posizioni di archiviazione o
  3. Accedi a una posizione specificamente concessa.
  4. Dai un'occhiata a http://msdn.microsoft.COM / IT-US / Biblioteca / Windows / Apps / HH464959.aspx per avere un'idea su cosa sarai in grado di accedere.

Altri suggerimenti

Da http://tirania.org/blog/archive/2011/sep-15.html < / a>:

.

Quando si utilizza C # e VB, stai utilizzando il quadro .NET completo. Ma hanno scelto di esporre un sottoinsieme più piccolo dell'API agli sviluppatori Per spingere la nuova visione per Windows 8.

E questa nuova visione include sistemi di sicurezza / sandbox e asincroni programmazione. Questo è il motivo per cui non si ottiene l'accesso diretto del file system o Accesso al socket e perché le API sincrona che sei stato abituato a consumare non sono esposti.

Ora, noti che ho detto "esposto" e non "andato".

Che cosa hanno fatto è stato che hanno solo esposto al compilatore un insieme di API Quando mi indirizzi il profilo della metropolitana. Quindi la tua applicazione non lo farà Chiamare accidentalmente file. Creare ad esempio. In runtime però, il CLR caricherà la libreria di classe completa, la stessa che contiene File.create, così internamente, il CLR potrebbe chiamare qualcosa come File.Create, è solo tu che non avrà accesso ad esso.

Questa divisione è simile a ciò che è stato fatto in passato con Silverlight, dove non tutte le API sono state esposte, e dove era MSCorlib Dato diritti che la tua applicazione non ha dovuto garantire il sistema sicurezza.

Potresti pensare che tu possa usare qualche trucco (fare riferimento al GAC Biblioteca anziché il riferimento del compilatore o usando la riflessione per ottenere a API private, o P / invocando in Win32). Ma tutti questi usi lo faranno essere catturato dalla domanda di revisione di AppStore e non sarai in grado di farlo Pubblica la tua app tramite il negozio di Microsoft.

Puoi ancora fare qualsiasi brutto hack ti per favore sul tuo sistema. E 'solo Non sarà possibile pubblicarlo attraverso l'AppStore.

Quindi probabilmente non c'è un modo ufficiale, e se c'è un modo non ufficiale, probabilmente non sarà accettato per l'App Store.

Solo in generale questo ha senso: non voglio scaricare un'applicazione apparentemente legittima solo per far scansionare il mio disco rigido e trovare il mio foglio di calcolo "budget.xls" che include le mie informazioni bancarie / creditizie.

Modifica: è possibile concedere l'accesso temporaneo ai file / cartelle sicuri tramite il selettore di file di WinRT, ma deve essere invocato e scelto esplicitamente dall'utente.

Puoi usare il storgefolder.getfolderflothasync metodo per ottenere un StorageFolder istanza da un percorso.

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(@"C:\...");
.

Nota che potresti non avere il permesso di farlo per tutti i percorsi sulla macchina però.

Situazione simile.Volevo accedere al file dei segnalibri Chrome per analizzare.Ho dovuto usare Inizialmente il fileopenpicker, ma il file che ritorna può essere "cache" nella forturaccessiste (?) Per il successivo recupero.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top