File.Decrypt(String) Methode

Definition

Entschlüsselt eine Datei, die vom aktuellen Konto mit der Encrypt(String)-Methode verschlüsselt wurde.

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

Parameter

path
String

Ein Pfad, der eine zu entschlüsselnde Datei beschreibt.

Attribute

Ausnahmen

.NET Framework und .NET Core-Versionen, die älter als 2.1 sind: Der path Parameter ist eine Zeichenfolge der Länge null, enthält nur Leerzeichen oder enthält ein oder mehrere ungültige Zeichen. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode ausführen.

Der path-Parameter ist null.

Es wurde ein ungültiges Laufwerk angegeben.

Die durch den path-Parameter beschriebene Datei konnte nicht gefunden werden.

Beim Öffnen der Datei ist ein E/A-Fehler aufgetreten. Beispielsweise ist die verschlüsselte Datei bereits geöffnet.

- oder -

Dieser Vorgang wird von der aktuellen Plattform nicht unterstützt.

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

Das aktuelle Betriebssystem ist nicht Windows NT oder höher.

Das Dateisystem ist nicht NTFS.

Der path-Parameter hat eine schreibgeschützte Datei angegeben.

- oder -

Dieser Vorgang wird von der aktuellen Plattform nicht unterstützt.

- oder -

Der path-Parameter hat ein Verzeichnis angegeben.

- oder -

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Beispiele

Im folgenden Codebeispiel werden die Encrypt -Methode und die Decrypt -Methode verwendet, um eine Datei zu verschlüsseln und dann zu entschlüsseln. Die Datei muss vorhanden sein, damit das Beispiel funktioniert.

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

Hinweise

Mit Decrypt der -Methode können Sie eine Datei entschlüsseln, die mit der Encrypt -Methode verschlüsselt wurde. Die Decrypt -Methode kann nur Dateien entschlüsseln, die mit dem aktuellen Benutzerkonto verschlüsselt wurden.

Wichtig

Diese API wird nur auf Windows-Plattformen unterstützt, die das NTFS Encrypting File System (EFS) verwenden können. Jeder Versuch, dies auf Nicht-Windows-Systemen, Windows Home Edition-Systemen oder Nicht-NTFS-Laufwerken zu verwenden, führt je nach Situation zu einem PlatformNotSupportedException oder NotSupportedException.

Die Verwendung dieser API in .NET Core wird nicht empfohlen. Es ist enthalten, um Portabilität für Anwendungen zu ermöglichen, die zu .NET Core wechseln, aber weiterhin explizit auf Windows ausgerichtet sind.

Die Decrypt -Methode erfordert exklusiven Zugriff auf die zu entschlüsselnde Datei und löst eine Ausnahme aus, wenn ein anderer Prozess die Datei verwendet. Wenn die Datei nicht verschlüsselt ist, Decrypt gibt einen Wert ungleich 0 (null) zurück, der auf Erfolg hinweist.

Sowohl die Encrypt -Methode als auch die Decrypt -Methode verwenden den auf dem Computer installierten Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) und die Dateiverschlüsselungsschlüssel des Prozesses, der die -Methode aufruft.

Das aktuelle Dateisystem muss als NTFS formatiert sein, und das aktuelle Betriebssystem muss Windows NT oder höher sein.

Gilt für: