Sdílet prostřednictvím


File.Decrypt(String) Metoda

Definice

Dešifruje soubor zašifrovaný aktuálním účtem pomocí metody .Encrypt(String)

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)

Parametry

path
String

Cesta, která popisuje soubor k dešifrování.

Atributy

Výjimky

.NET Framework a .NET Core verze starší než 2.1: Parametr path je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje jeden nebo více neplatných znaků. Na neplatné znaky se můžete dotazovat pomocí metody .GetInvalidPathChars()

Parametr path je null.

Byla zadána neplatná jednotka.

Soubor popsaný parametrem path nebyl nalezen.

Při otevírání souboru došlo ke vstupně-výstupní chybě. Například šifrovaný soubor je už otevřený.

-nebo-

Tato operace není na aktuální platformě podporovaná.

Zadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.

Aktuální operační systém není Windows NT nebo novější.

Systém souborů není NTFS.

Parametr path určil soubor, který je jen pro čtení.

-nebo-

Tato operace není na aktuální platformě podporovaná.

-nebo-

Parametr path určil adresář.

-nebo-

Volající nemá požadované oprávnění.

Příklady

Následující příklad kódu používá metodu Encrypt a metodu Decrypt k šifrování a dešifrování souboru. Aby příklad fungoval, musí soubor existovat.

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

Poznámky

Metoda Decrypt umožňuje dešifrovat soubor, který byl zašifrován pomocí metody .Encrypt Metoda Decrypt může dešifrovat pouze soubory, které byly zašifrovány pomocí aktuálního uživatelského účtu.

Důležité

Toto rozhraní API je podporováno pouze na platformách Windows, které můžou používat systém souborů EFS (Ntfs Encrypting File System). Jakýkoli pokus o použití této funkce v jiných systémech než Windows, v systémech Windows Home Edition nebo na jednotkách, které nejsou systémem souborů NTFS, bude v PlatformNotSupportedExceptionNotSupportedExceptionzávislosti na situaci výsledkem nebo .

Použití tohoto rozhraní API v .NET Core se nedoporučuje. Je součástí funkce umožňující přenositelnost pro aplikace, které přesouvají do .NET Core, ale stále explicitně cílí na Windows.

Metoda Decrypt vyžaduje výhradní přístup k dešifrovanému souboru a vyvolá výjimku, pokud soubor používá jiný proces.

Encrypt Metoda i Decrypt metoda používají zprostředkovatele kryptografických služeb (CSP) nainstalovaného v počítači a šifrovací klíče souboru procesu volajícího metodu .

Aktuální systém souborů musí být naformátovaný jako NTFS a aktuální operační systém musí být Windows NT nebo novější.

Platí pro