2010-01-19 2 views
5

Ich überlege mir, eine Anwendung in C# /. NET zu schreiben, die programmatisch eine XML-Datei auf dem Computer eines Benutzers ändert und versuche herauszufinden, ob Silverlight (und welche Versionen in welchen Modi) für diese Aufgabe geeignet ist.Kann Silverlight eine Datei auf dem Computer eines lokalen Benutzers ändern?

Hier ist der Workflow:

  • Benutzerdatei
  • wählt Anwendungsdatei
  • Anwendung speichert Datei ändert, ursprüngliche Datei überschrieben

Ist das möglich in Silverlight? Wenn ja, in welchen Versionen und unter welchen Bedingungen?

+0

Ich hoffe, dass Silverlight nicht meine Dateien einmischen kann. – zneak

+0

Ich weiß, dass Silverlight für Ihre Dateien blind ist, es sei denn, Sie wählen eine Datei speziell aus (was ich glaube, dass sie über ein Dialogfeld erfolgt). Was mich interessiert, ist, dass, wenn der Benutzer sich entscheidet, der SL-Anwendung die Erlaubnis zu geben (wenn das überhaupt möglich ist), SL dann zurück zum ursprünglichen Ort durch einen IO-Strom schreiben kann. –

Antwort

2

Einige Antworten hier konzentrieren sich auf Isolated Storage. Wenn keine andere Anwendung auf diese Daten zugreifen muss, ist vielleicht Isolated Storage die richtige Lösung für Sie. Dieses link ist ein Blog, der beschreibt, wie Sie Isolated Storage auf den Punkt gebracht werden.

Ich vermute, dass dies möglicherweise nicht das ist, was Sie wollen, da Sie den Benutzer die Datei auswählen müssen.

Sicherlich in SL3 können Sie den Benutzer die Datei auswählen und dann können Sie es lesen.

Um es jedoch erneut zu speichern, müssten Sie dem Benutzer den Dialog "Datei speichern" anzeigen lassen, um einen Dateistrom zu erhalten, in den Sie schreiben können.

In SL4 mit OOB mit erhöhten privs können Sie solche Dateien direkt im Benutzerordner wie Eigene Dateien speichern.

bearbeiten

Nur absolut klar sein, man kann nicht in eine Datei schreiben, die die OpenFileDialog nur gelesen erworben wurde, können Sie in einer Datei lesen nicht, dass erworben als mit SaveFileDialog nur schreiben.

+0

Danke für Ihre ausführliche Antwort. Wenn Sie jedoch '' sagen, um es erneut zu speichern, müssen Sie dem Benutzer den Dialog "Datei speichern" anzeigen lassen, um einen Dateistrom zu erhalten, in den Sie schreiben können. "Ist dies in SL3 möglich oder erfordert es SL4? ? –

+0

Ja, wenn nicht anders qualifiziert Ich verweise auf die aktuelle Version SL3. Sie können ein Dialogfeld "Speichern" aus einer In-Browser-Instanz von SL3 anzeigen. Der Benutzer wählt die Datei aus und hat Ihrem Code das Recht gewährt, in die ausgewählte Datei zu schreiben, wie sie es für richtig hält. OpenFileDialog gibt 'FileInfo' (s), auf denen Sie' OpenRead', aber nicht 'OpenWrite' verwenden können, während SaveFileDialog' FileInfo' (s) gibt, auf denen Sie 'OpenWrite', aber nicht' OpenRead' können. – AnthonyWJones

+1

Ok. Ich denke, das macht Sinn. Wenn ich also die Datei eines Benutzers ändern möchte, würde ich 1) den Benutzer nach der Datei fragen, 2) die Datei im Code ändern und dann 3) den Benutzer fragen, wo er die Datei speichern soll. Wenn der Benutzer seine ursprüngliche Datei überschreiben möchte, hat er die Wahl, aber der Benutzer muss immer noch angeben, wo die Datei gespeichert werden soll. –

1

SL3 ermöglicht den Zugriff auf einen isolierten Speicherbereich, SL4 Zugang eröffnet noch weiter für vertrauenswürdige Anwendungen so dass sie Dateien in MyDocs zuzugreifen, MyPictures usw.

+0

Könnten Sie das weiter ausführen und erklären, wie das funktionieren könnte? Insbesondere, kann ich meinen Workflow in SL3 und unter welchen Bedingungen durchführen? –

3

Die Silverlight-Laufzeitumgebung arbeitet in einer Sicherheits-Sandbox.

Sie können auf Dateien von der Computerfestplatte nur über den Datei öffnen-Dialog zugreifen. Sie können lesen und schreiben von Isolated Storage mit Silverlight 2 und höher.

kommend in Silverlight 4 Sie erhalten die Möglichkeit, Dateien zugreifen müssen, von „spezielle Verzeichnisse“ wie Eigene Dateien, Eigene Musik, Eigene Bilder usw. (http://weblogs.asp.net/nmarun/archive/2009/11/27/local-file-access-silverlight-4.aspx)

+0

Werden beim Lesen und Schreiben Änderungen an der ursprünglichen Datei vorgenommen, auf die über das Dialogfeld "Datei öffnen" zugegriffen wird? –

+0

Für welche Version gilt dies auch? –

1

Silverlight-Anwendungen auf dem Benutzers kann nicht beliebige Dateien ändern Computer. Aber sie können Dateien lokal speichern, mit Isolated Storage:

In .NET Framework, isolierter Speicher ist ein Speichermechanismus, die Daten auf dem lokalen Rechner zu speichern, ohne zu verletzen keine Sicherheitsrichtlinien teilweise vertrauenswürdige Anwendungen ermöglicht auf dem Computer eingestellt. Isolierter Speicher ist seit der ersten Version von .NET Framework verfügbar und besonders nützlich für heruntergeladene, teilweise vertrauenswürdige Komponenten, die normalerweise keinen Zugriff auf die Standard-E/A-Mechanismen erhalten. Für dieselben Anwendungen wird jedoch normalerweise das Recht gewährt, isolierten Speicher zu verwenden. Auf diese Weise können Anwendungen, die aus potenziell nicht vertrauenswürdigen Quellen stammen, immer noch einige Festplatten-I/O-Vorgänge ausführen, wenn auch auf kontrollierte Weise.

Sie in dem folgenden Artikel mehr darüber lesen:

Silverlight and Local Storage

+0

Danke für den Link "Silverlight und Local Storage." Dies gilt jedoch für Version 2.0 von Silverlight. Ich frage mich, ob seither mehr Arbeit geleistet wurde. –

+0

Scheinbar führt Silverlight 4.0 einen 'SaveFileDialog' ein (http://msdn.microsoft.com/en-us/library/system.windows.controls.savefiledialog%28VS.95%29.aspx). Dadurch können Benutzer jedoch einen lokalen Dateinamen angeben. Anwendungen dürfen den Speicherort nicht selbst auswählen. –

1

Die OS-Datei Öffnen/Speichern Dialog Zugang Silverlight ermöglicht Built-in/ändern beliebige Datei die der Benutzer angibt, indem er einen Dateistream zurückgibt, auf den die Silverlight App Zugriff hat.

Darüber hinaus hat die Silverlight App Zugriff auf einen eigenen isolierten Speicher.

+0

für welche Version (en) gilt das? –

+0

Der Dateidialog gilt für V2.0 und höher. Ich glaube Isolated Storage gilt für alle Versionen. – Aaron

Verwandte Themen