Exportieren (0) Drucken
Alle erweitern

FileIOPermission-Klasse

Aktualisiert: November 2007

Steuert den Zugriff auf Dateien und Ordner. Diese Klasse kann nicht vererbt werden.

Namespace:  System.Security.Permissions
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class FileIOPermission : CodeAccessPermission, 
	IUnrestrictedPermission
/** @attribute SerializableAttribute */ 
/** @attribute ComVisibleAttribute(true) */
public final class FileIOPermission extends CodeAccessPermission implements IUnrestrictedPermission
public final class FileIOPermission extends CodeAccessPermission implements IUnrestrictedPermission

Diese Berechtigung unterscheidet zwischen den folgenden vier Typen von E/A-Dateizugriff, die durch FileIOPermissionAccess bereitgestellt werden:

  • Read: Lesezugriff auf den Dateiinhalt oder auf Informationen über die Datei, z. B. deren Größe oder den Zeitpunkt der letzten Änderung.

  • Write: Schreibzugriff auf den Inhalt der Datei oder auf Informationen über die Datei, um z. B den Dateinamen ändern zu können. Lässt außerdem Löschen und Überschreiben zu.

  • Append: Nur die Möglichkeit zum Schreiben am Dateiende. Kein Lesezugriff.

  • PathDiscovery: Zugriff auf die Informationen im Pfad selbst. Dadurch werden vertrauliche Informationen im Pfad (z. B. Benutzernamen) oder Informationen zur Verzeichnisstruktur geschützt, die im Pfad erkennbar sind. Dieser Wert gewährt keinen Zugriff auf Dateien oder Ordner, die durch den Pfad dargestellt werden.

6485ct6t.alert_note(de-de,VS.90).gifHinweis:

Das Gewähren von Zugriff für Write auf eine Assembly ähnelt dem Gewähren vollständiger Vertrauenswürdigkeit. Wenn eine Anwendung nicht ins Dateisystem schreiben soll, sollte sie keinen Write-Zugriff haben.

Alle diese Berechtigungen sind von einander unabhängig. Dies bedeutet, dass ein bestimmter Typ von Zugriffsberechtigung keine andere Berechtigung voraussetzt. Eine Write-Berechtigung z. B. setzt keine Read-Berechtigung oder Append-Berechtigung voraus. Wenn mehrere Berechtigungen gewährt werden sollen, können diese mithilfe der bitweisen OR-Operation verknüpft werden, wie im folgenden Codebeispiel gezeigt. Dateiberechtigungen werden in Form von eindeutigen, absoluten Pfaden definiert. Aufrufe sollten immer mit eindeutigen Dateipfaden durchgeführt werden.

FileIOPermission beschreibt geschützte Operationen für Dateien und Ordner. Die File-Klasse bietet sicheren Zugriff auf Dateien und Ordner. Die Sicherheitsüberprüfung des Zugriffs erfolgt bei der Erstellung des Handles für die Datei. Die sich aus der Sicherheitsüberprüfung ergebende Leistungsbeeinträchtigung wird verringert, wenn die Überprüfung zur Erstellungszeit durchgeführt wird. Das Öffnen einer Datei ist ein einmaliger Vorgang, während Lese- und Schreibvorgänge in einer geöffneten Datei mehrmals erfolgen können. Sobald die Datei geöffnet ist, werden keine weiteren Überprüfungen durchgeführt. Das Objekt wird möglicherweise missbraucht, wenn es an einen nicht vertrauenswürdigen Aufrufer übergeben wird. Dateihandles sollten z. B. nicht in öffentlichen globalen statischen Feldern gespeichert werden, in denen Code mit geringeren Berechtigungen auf die Handles zugreifen kann.

FileIOPermissionAccess gibt Aktionen an, die für die Datei oder den Ordner ausgeführt werden können. Darüber hinaus können diese Aktionen mit der bitweisen OR-Operation zu komplexen Instanzen verbunden werden.

Beim Zugriff auf einen Ordner wird ebenfalls der Zugriff auf die darin enthaltenen Dateien sowie auf sämtliche Dateien und Ordner in den untergeordneten Ordnern gewährt. Beispielsweise wird beim Read-Zugriff auf C:\Ordner1\ auch Read-Zugriff auf C:\Ordner1\Datei1.txt, C:\Ordner1\Ordner2\, C:\Ordner1\Ordner2\Datei2.txt usw. gewährt.

6485ct6t.alert_caution(de-de,VS.90).gifVorsicht:

UnrestrictedFileIOPermission gewährt Zugriff auf alle Pfade in einem Dateisystem, einschließlich mehrerer Pfadnamen, über die auf dieselbe Datei zugegriffen wird. Um für den Zugriff auf eine Datei Deny festzulegen, müssen Sie Deny für alle möglichen Pfade der Datei festlegen. Wenn z. B. \\Server\Freigabe dem Netzlaufwerk X zugeordnet ist und Sie Deny für den Zugriff auf \\Server\Freigabe\Datei festlegen möchten, müssen Sie Deny für \\Server\Freigabe\Datei, X:\Datei und alle anderen Pfade festlegen, über die Sie auf die Datei zugreifen können. Ein einfacheres Verfahren für den Umgang mit mehreren Pfaden besteht in der Kombination aus PermitOnly und Deny. Im vorhergehenden Beispiel können Sie PermitOnly für \\Server\Freigabe und Deny für \\Server\Freigabe\Datei festlegen, wodurch alle alternativen Pfade vollständig beseitigt werden. Weitere Informationen über dieses Thema und über die Verwendung von PermitOnly mit Deny finden Sie unter "Kanonisierungsprobleme beim Verwenden von Deny" in Verwenden der Deny-Methode.

6485ct6t.alert_note(de-de,VS.90).gifHinweis:

Pfade der Form \\Server\Freigabe\Scheinordner\..\Datei werden vom Sicherheitssystem in die kanonische Form \\Server\Freigabe\Datei konvertiert, sodass Sie Deny nur für den kanonischen Pfad \\Server\Freigabe\Datei festlegen müssen. Syntaktische Variationen, mit denen derselbe Pfad angegeben werden kann, können Sie außer Acht lassen. Der Punktoperator (.) kann einfach, mehrfach oder in Verbindung mit nachfolgenden Leerzeichen angezeigt werden. Leerzeichen werden ignoriert, wenn sie dem Punktoperator folgen. Ein einzelner Punkt wie im Pfad C:\temp\test\.\test.txt wird ignoriert, was im Pfad C:\temp\test\test.txt resultiert. Mehrere Punktoperatoren werden als ".." behandelt, d. h., das unmittelbar vorhergehende Verzeichnis wird übersprungen. So wird beispielsweise der Pfad C:\temp\test\.... \test.txt als C:\temp\test.txt interpretiert.

6485ct6t.alert_note(de-de,VS.90).gifHinweis:

Deny ist unter dem Dateisystem Windows NTFS am effizientesten. NTFS bietet eine deutliche höhere Sicherheit als FAT32. Ausführliche Informationen über NTFS finden Sie in der Windows-Dokumentation.

Die folgenden Beispiele veranschaulichen den von FileIOPermission verwendeten Code. Nach den folgenden beiden Zeilen Code stellt das Objekt f die Berechtigung zum Lesen aller Dateien auf den lokalen Datenträgern des Clientcomputers dar. Im Codebeispiel wird dann die Berechtigung angefordert, um festzustellen, ob die Anwendung über die Berechtigung zum Lesen der Dateien verfügt.

FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
    f.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}



FileIOPermission f = new FileIOPermission(PermissionState.None);
f.set_AllLocalFiles(FileIOPermissionAccess.Read);


Nach den folgenden beiden Zeilen Code stellt das Objekt f2 die Berechtigung zum Lesen von C:\test_r und zum Lesen und Schreiben in C:\example\out.txt dar. Read und Write stellen die Berechtigungen für Dateien und Ordner wie bereits beschrieben dar. Nach dem Erstellen der Berechtigung fordert der Code die Berechtigung an, um festzustellen, ob die Anwendung über die Berechtigung zum Lesen und Schreiben für die Datei verfügt.

FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}


FileIOPermission f2 = 
    new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | 
    FileIOPermissionAccess.Read, "C:\\example\\out.txt");


System.Object
  System.Security.CodeAccessPermission
    System.Security.Permissions.FileIOPermission

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft