FileIOPermission Classe

Definizione

Attenzione

Code Access Security is not supported or honored by the runtime.

Controlla se è possibile accedere ai file e alle cartelle. La classe non può essere ereditata.

public ref class FileIOPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class FileIOPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Ereditarietà
FileIOPermission
Attributi
Implementazioni

Esempio

Negli esempi seguenti viene illustrato il codice che usa FileIOPermission . Dopo le due righe di codice seguenti, l'oggetto rappresenta l'autorizzazione per leggere tutti i file nei dischi locali f del computer client. L'esempio di codice richiede quindi l'autorizzazione per determinare se l'applicazione dispone dell'autorizzazione per leggere i file.

FileIOPermission^ f = gcnew FileIOPermission( PermissionState::None );
f->AllLocalFiles = FileIOPermissionAccess::Read;
try
{
    f->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
    f.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f As New FileIOPermission(PermissionState.None)
f.AllLocalFiles = FileIOPermissionAccess.Read
Try
    f.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

Dopo le due righe di codice, l'oggetto f2 rappresenta le autorizzazioni per leggere C:\test_r e leggere e scrivere su c:\example\out.txt. Read e Write rappresentano le autorizzazioni per file/cartelle come descritto in precedenza. Dopo aver creato l'autorizzazione, il codice richiede l'autorizzazione per determinare se l'applicazione ha il diritto di leggere e scrivere nel file.

FileIOPermission^ f2 = gcnew FileIOPermission( FileIOPermissionAccess::Read,"C:\\test_r" );
f2->AddPathList( (FileIOPermissionAccess) (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");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f2 As New FileIOPermission(FileIOPermissionAccess.Read, "C:\test_r")
f2.AddPathList(FileIOPermissionAccess.Write Or FileIOPermissionAccess.Read, "C:\example\out.txt")
Try
    f2.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

Commenti

Questa autorizzazione distingue tra i quattro tipi di accesso di I/O ai file seguenti forniti da FileIOPermissionAccess :

  • Read: accesso in lettura al contenuto del file o accesso alle informazioni sul file, ad esempio la lunghezza o l'ora dell'ultima modifica.

  • Write: accesso in scrittura al contenuto del file o accesso per modificare le informazioni sul file, ad esempio il nome. Consente anche l'eliminazione e la sovrascrittura.

  • Append: possibilità di scrivere solo alla fine di un file. Nessuna possibilità di leggere.

  • PathDiscovery: accesso alle informazioni nel percorso stesso. Ciò consente di proteggere le informazioni riservate nel percorso, ad esempio i nomi utente, nonché le informazioni sulla struttura di directory rivelata nel percorso. Questo valore non consente l'accesso ai file o alle cartelle rappresentate dal percorso.

Nota

Concedere Write l'accesso a un assembly è simile alla concessione dell'attendibilità totale. Se un'applicazione non deve scrivere nel file system, non deve avere Write accesso.

Tutte queste autorizzazioni sono indipendenti, vale a dire che i diritti di uno non implicano diritti a un altro. Ad esempio, Write l'autorizzazione non implica l'autorizzazione Read per o Append . Se si desiderano più autorizzazioni, è possibile combinarne le autorizzazioni usando un'operazione OR bit per bit, come illustrato nell'esempio di codice seguente. L'autorizzazione per i file è definita in termini di percorsi assoluti canonici. Le chiamate devono sempre essere effettuate con percorsi di file canonici.

FileIOPermission descrive le operazioni protette su file e cartelle. La File classe consente di fornire accesso sicuro a file e cartelle. Il controllo di accesso di sicurezza viene eseguito quando viene creato l'handle per il file. Eseguendo il controllo in fase di creazione, l'impatto sulle prestazioni del controllo di sicurezza viene ridotto al minimo. L'apertura di un file avviene una sola volta, mentre la lettura e la scrittura possono verificarsi più volte. Una volta aperto il file, non vengono eseguiti altri controlli. Se l'oggetto viene passato a un chiamante non attendibile, può essere usato in modo improprio. Ad esempio, gli handle di file non devono essere archiviati in statici globali pubblici in cui il codice con meno autorizzazioni può accedervi.

FileIOPermissionAccess specifica le azioni che possono essere eseguite sul file o sulla cartella. Inoltre, queste azioni possono essere combinate usando un'operazione OR bit per bit per formare istanze complesse.

L'accesso a una cartella implica l'accesso a tutti i file in essa contenuti, nonché l'accesso a tutti i file e le cartelle nelle relative sottocartelle. Ad esempio, l'accesso a C:\cartella1\ implica l'accesso Read Read a C:\folder1\file1.txt, C:\cartella1\cartella2, \ C:\folder1\folder2\file2.txt e così via.

Nota

Nelle versioni del .NET Framework precedenti alla .NET Framework 4, è possibile usare il metodo per impedire l'accesso accidentale alle risorse di sistema da parte di CodeAccessPermission.Deny codice attendibile. Deny è obsoleto e l'accesso alle risorse è ora determinato esclusivamente dal set di autorizzazioni concesse per un assembly. Per limitare l'accesso ai file, è necessario eseguire codice parzialmente attendibile in una sandbox e assegnare le autorizzazioni solo alle risorse a cui il codice può accedere. Per informazioni sull'esecuzione di un'applicazione in una sandbox, vedere Procedura: Eseguire codice parzialmente attendibile in una sandbox.

Costruttori

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String)

Inizializza una nuova istanza della classe FileIOPermission con l'accesso specificato al file o alla directory designata e i diritti di accesso specificati alle informazioni di controllo del file.

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String[])

Inizializza una nuova istanza della classe FileIOPermission con l'accesso specificato alle directory e ai file designati e i diritti di accesso specificati alle informazioni di controllo dei file.

FileIOPermission(FileIOPermissionAccess, String)

Inizializza una nuova istanza della classe FileIOPermission con l'accesso specificato al file o alla directory designati.

FileIOPermission(FileIOPermissionAccess, String[])

Inizializza una nuova istanza della classe FileIOPermission con l'accesso specificato alle directory e ai file designati.

FileIOPermission(PermissionState)

Inizializza una nuova istanza della classe FileIOPermission con autorizzazione con restrizioni o senza restrizioni, come specificato.

Proprietà

AllFiles

Ottiene o imposta l'accesso autorizzato a tutti i file.

AllLocalFiles

Ottiene o imposta l'accesso autorizzato a tutti i file locali.

Metodi

AddPathList(FileIOPermissionAccess, String)

Aggiunge allo stato esistente dell'autorizzazione l'accesso al file o alla directory specificata.

AddPathList(FileIOPermissionAccess, String[])

Aggiunge allo stato esistente dell'autorizzazione l'accesso ai file o alle directory specificate.

Assert()

Dichiara che il codice chiamante può accedere alla risorsa protetta da una richiesta di autorizzazione tramite il codice che chiama il metodo, anche se ai chiamanti più in alto nello stack non è stata concessa l'autorizzazione per accedere alla risorsa. L'uso di Assert() può creare problemi di sicurezza.

(Ereditato da CodeAccessPermission)
Copy()

Crea e restituisce una copia identica dell'autorizzazione corrente.

Demand()

Forza un oggetto SecurityException in fase di esecuzione se tutti i chiamanti in posizioni superiori nello stack di chiamate non hanno l'autorizzazione specificata dall'istanza corrente.

(Ereditato da CodeAccessPermission)
Deny()
Obsoleta.
Obsoleta.

Impedisce ai chiamanti in posizione più elevata nello stack di chiamate di usare il codice che chiama questo metodo per accedere alla risorsa specificata dall'istanza corrente.

(Ereditato da CodeAccessPermission)
Equals(Object)

Consente di determinare se l'oggetto FileIOPermission specificato è uguale all'oggetto FileIOPermission corrente.

Equals(Object)

Consente di determinare se l'oggetto CodeAccessPermission specificato è uguale all'oggetto CodeAccessPermission corrente.

(Ereditato da CodeAccessPermission)
FromXml(SecurityElement)

Ricostruisce un'autorizzazione con uno stato specificato da una codifica XML.

GetHashCode()

Ottiene un codice hash per l'oggetto FileIOPermission adatto per l'uso in algoritmi di hash e in strutture di dati, come una tabella hash.

GetHashCode()

Ottiene un codice hash per l'oggetto CodeAccessPermission adatto per l'uso in algoritmi di hash e in strutture di dati, come una tabella hash.

(Ereditato da CodeAccessPermission)
GetPathList(FileIOPermissionAccess)

Ottiene tutti i file e le directory con l'oggetto FileIOPermissionAccess specificato.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Intersect(IPermission)

Crea e restituisce un'autorizzazione che rappresenta l'intersezione tra l'autorizzazione corrente e quella specificata.

IsSubsetOf(IPermission)

Determina se l'autorizzazione corrente è un subset di quella specificata.

IsUnrestricted()

Restituisce un valore che indica se l'autorizzazione corrente è senza restrizioni.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
PermitOnly()

Impedisce ai chiamanti in posizione più elevata nello stack di chiamate di usare il codice che chiama questo metodo per accedere a tutte le risorse eccetto quella specificata dall'istanza corrente.

(Ereditato da CodeAccessPermission)
SetPathList(FileIOPermissionAccess, String)

Imposta l'accesso specificato al file o alla directory indicati, sostituendo lo stato esistente dell'autorizzazione.

SetPathList(FileIOPermissionAccess, String[])

Imposta l'accesso specificato ai file e alle directory indicati, sostituendo lo stato corrente per l'accesso specificato con un nuovo set di percorsi.

ToString()

Crea e restituisce una rappresentazione di stringa dell'oggetto autorizzazione corrente.

(Ereditato da CodeAccessPermission)
ToXml()

Crea una codifica XML dell'autorizzazione e del relativo stato corrente.

Union(IPermission)

Crea un'autorizzazione che rappresenta l'unione dell'autorizzazione corrente e di quella specificata.

Implementazioni dell'interfaccia esplicita

IPermission.Demand()

Genera un'eccezione SecurityException in fase di esecuzione se non viene soddisfatto il requisito di sicurezza.

(Ereditato da CodeAccessPermission)
IStackWalk.Assert()

Dichiara che il codice chiamante può accedere alla ricorsa identificata dall'oggetto autorizzazioni corrente, anche se ai chiamanti più in alto nello stack non è stata concessa l'autorizzazione ad accedere alla risorsa.

(Ereditato da CodeAccessPermission)
IStackWalk.Demand()

Determina in fase di esecuzione se tutti i chiamanti nello stack di chiamate hanno l'autorizzazione specificata dall'oggetto autorizzazioni corrente.

(Ereditato da CodeAccessPermission)
IStackWalk.Deny()

Causa l'esito negativo di ogni oggetto Demand() per l'oggetto corrente che passa attraverso il codice chiamante.

(Ereditato da CodeAccessPermission)
IStackWalk.PermitOnly()

Causa un errore per ogni metodo Demand() che attraversa il codice chiamante per tutti gli oggetti ad eccezione dell'oggetto corrente, anche se al codice di livello superiore nello stack di chiamate è stata concessa l'autorizzazione per accedere ad altre risorse.

(Ereditato da CodeAccessPermission)

Si applica a

Vedi anche