Aufmacherbild: pixelio.de
Anwendungen laufen in Silverlight aus sicherheitskritischen Gründen in einer so genannten Sandbox. Dabei sind der Anwendung systemrelevante Funktionen wie der Dateizugriff auf Benutzerdaten vorenthalten. Für viele Applikationen sind diese Features unentbehrlich, weshalb es seit Silverlight 4 die Möglichkeit gibt, eine Anwendung als Trusted Application auszuführen und ihr somit erweiterte Berechtigungen zur Verfügung zu stellen. Möglich war das bisher nur durch die Out-of-Browser-Funktion (OOB), die bereits mit Silverlight 3 eingeführt wurde. Genau das ändert sich mit der aktuellen Version, erweiterte Berechtigungen können nun direkt im Browser genutzt werden. Es wird damit also die Ausführung einer Trusted Application im Browser möglich. Vorgeschrieben wird dafür jedoch ein von VeriSign ausgestelltes Zertifikat, ohne dieses kann die Anwendung nur lokal getestet werden. Die Vertrauenseinstellungen der Anwendung können wie gewohnt im Eigenschaftsmenü des Projekts angepasst werden (Abb. 1). Dazu ist die Aktivierung der Einstellung Require elevated trust when running in-browser notwendig, außerdem muss für die Anwendung der OOB-Support aktiviert werden. Mit der Anweisung if (!Application.Current.HasElevatedPermissions) { … } lassen sich die Vertrauenseinstellungen überprüfen. Eine Übersicht über Berechtigungen, die einer Anwendung im Trusted-Modus in Silverlight 5 zur Verfügung stehen, listet Tabelle 1 auf. Dabei werden die Features den vorherigen Versionen gegenübergestellt.
|
Feature |
Silverlight Sandbox |
Silverlight 4 Trusted |
Silverlight 5 Trusted |
|
Prompt-free |
nein |
ja |
ja |
|
Cross-Domain-Zugriff |
nein |
ja |
ja |
|
Tastaturkürzel bei Vollbild |
nein |
ja |
ja |
|
COM |
nein |
ja |
ja |
|
P/Invoke |
nein |
nein |
ja |
|
Trusted „In-Browser“ |
nein |
nein |
ja |
|
Voller Dateizugriff |
nein |
teilweise |
ja |
Tabelle 1: Vergleich der Features für Trusted Applications
Dateizugriff
Ein Teil der neuen Möglichkeiten für Trusted Applications soll am Beispiel des Zugriffs auf Dateien für In-Browser-Anwendungen dargestellt werden. Dazu soll ein bestimmter Text aus einem Eingabefeld auf der Festplatte des Nutzers gespeichert werden. Es ist wichtig zu prüfen, ob die notwendigen Berechtigungen vorhanden sind, um eine Exception zu vermeiden. Der Rest erfolgt in wohlbekannter .NET-Manier, indem die Directory-Klasse genutzt wird, um das Verzeichnis C:/Silverlight5App zu erstellen und die FileStream-Klasse für den Datenstrom zu öffnen (Listing 1). Mit einer Instanz von StreamWriter kann anschließend der Inhalt des Steuerelements in die Datei geschrieben werden. Ein erster Test der Anwendung erzeugt die gewünschte Datei, solange die Anwendung über die localhost-Adresse aufgerufen wird. Andernfalls muss ein gültiges Zertifikat installiert und in der Registrierung die Einstellung aktiviert werden, dass Trusted Applications innerhalb des Browsers ausgeführt werden dürfen. Weitere Informationen dazu finden Sie auf der MSDN-Seite von Microsoft.
var directory = @"C:\Silverlight5App";if (!Directory.Exists(directory))Directory.CreateDirectory(directory);var filename = "Textbox.txt";var fullPath = Path.Combine(directory, filename);using (var fileStream = File.Create(fullPath)){using (var writer = new StreamWriter(fileStream, Encoding.UTF8)){writer.Write(textBox.Text);}}MessageBox.Show("Es wurde erfolgreich in die Datei geschrieben.");




