Condividi tramite


File.Encrypt(String) Metodo

Definizione

Crittografa un file in modo che possa essere decrittografato solamente dall'account che lo ha crittografato.

public:
 static void Encrypt(System::String ^ path);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static void Encrypt (string path);
public static void Encrypt (string path);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member Encrypt : string -> unit
static member Encrypt : string -> unit
Public Shared Sub Encrypt (path As String)

Parametri

path
String

Percorso che descrive il file da crittografare.

Attributi

Eccezioni

.NET Framework e .NET Core versioni precedenti a 2.1: il path parametro è una stringa di lunghezza zero, contiene solo spazio vuoto o contiene uno o più caratteri non validi. È possibile cercare i caratteri non validi usando il metodo GetInvalidPathChars().

Il valore del parametro path è null.

È stata specificata un'unità non valida.

Il file descritto dal parametro path non è stato trovato.

Si è verificato un errore di I/O durante l'apertura del file.

-oppure-

L'operazione non è supportata sulla piattaforma corrente.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.

Il sistema operativo corrente non è Windows NT o versioni successive.

Il file system non è NTFS.

Il parametro path specifica un file di sola lettura.

-oppure-

L'operazione non è supportata sulla piattaforma corrente.

-oppure-

Il parametro path specifica una directory.

-oppure-

Il chiamante non dispone dell'autorizzazione richiesta.

Esempio

Nell'esempio di codice seguente viene usato il metodo e il EncryptDecrypt metodo per crittografare e quindi decrittografare un file. Il file deve esistere per il funzionamento dell'esempio.

using namespace System;
using namespace System::IO;

int main()
{
    String^ fileName = "test.xml";
    if (!File::Exists(fileName))
    {
        Console::WriteLine("The file " + fileName
            + " does not exist.");
        return 0;
    }
    try
    {
        Console::WriteLine("Encrypt " + fileName);

        // Encrypt the file.
        File::Encrypt(fileName);

        Console::WriteLine("Decrypt " + fileName);

        // Decrypt the file.
        File::Decrypt(fileName);

        Console::WriteLine("Done");
    }
    catch (IOException^ ex)
    {
        Console::WriteLine("There was an IO problem.");
        Console::WriteLine(ex->Message);
    }
    catch (PlatformNotSupportedException^)
    {
        Console::WriteLine("Encryption is not supported on " +
            "this system.");
    }
    catch (NotSupportedException^)
    {
        Console::WriteLine("Encryption is not supported on " +
            "this system.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("The operation could not be "
            + "carried out.");
    }
}
using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = "test.xml";

                Console.WriteLine("Encrypt " + FileName);

                // Encrypt the file.
                AddEncryption(FileName);

                Console.WriteLine("Decrypt " + FileName);

                // Decrypt the file.
                RemoveEncryption(FileName);

                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Encrypt a file.
        public static void AddEncryption(string FileName)
        {

            File.Encrypt(FileName);
        }

        // Decrypt a file.
        public static void RemoveEncryption(string FileName)
        {
            File.Decrypt(FileName);
        }
    }
}
open System.IO

// Encrypt a file.
let addEncryption fileName = File.Encrypt fileName

// Decrypt a file.
let removeEncryption fileName = File.Decrypt fileName

let fileName = "test.xml"

printfn $"Encrypt {fileName}"

// Encrypt the file.
addEncryption fileName

printfn $"Decrypt {fileName}"

// Decrypt the file.
removeEncryption fileName

printfn "Done"
Imports System.IO
Imports System.Security.AccessControl



Module FileExample

    Sub Main()
        Try
            Dim FileName As String = "test.xml"

            Console.WriteLine("Encrypt " + FileName)

            ' Encrypt the file.
            AddEncryption(FileName)

            Console.WriteLine("Decrypt " + FileName)

            ' Decrypt the file.
            RemoveEncryption(FileName)

            Console.WriteLine("Done")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub


    ' Encrypt a file.
    Sub AddEncryption(ByVal FileName As String)

        File.Encrypt(FileName)

    End Sub


    ' Decrypt the file.
    Sub RemoveEncryption(ByVal FileName As String)

        File.Decrypt(FileName)

    End Sub
End Module

Commenti

Il Encrypt metodo consente di crittografare un file in modo che solo l'account usato per chiamare questo metodo possa decrittografarlo. Utilizzare il Decrypt metodo per decrittografare un file crittografato dal Encrypt metodo .

Importante

Questa API è supportata solo nelle piattaforme Windows in grado di usare NTFS Encrypting File System (EFS). Qualsiasi tentativo di usare questa operazione nei sistemi non Windows, nei sistemi Windows Home Edition o nelle unità non NTFS genera un PlatformNotSupportedException oggetto o NotSupportedException, a seconda della situazione.

Non è consigliabile usare questa API in .NET Core; è incluso per abilitare la portabilità per le applicazioni che passano a .NET Core, ma sono ancora destinate in modo esplicito a Windows.

Il Encrypt metodo richiede l'accesso esclusivo al file crittografato e avrà esito negativo se un altro processo usa il file.

Sia il Encrypt metodo che il Decrypt metodo usano il provider di servizi di crittografia (CSP) installato nel computer e le chiavi di crittografia dei file del processo che chiamano il metodo.

Questo metodo non è disponibile in tutte le versioni di Windows. Ad esempio, non è disponibile nelle edizioni Home.

Il file system corrente deve essere formattato come NTFS.

Si applica a