Поделиться через


File.Decrypt(String) Метод

Определение

Расшифровывает файл, зашифрованный текущей учетной записью с помощью метода 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)

Параметры

path
String

Путь, описывающий файл, который нужно расшифровать.

Атрибуты

Исключения

.NET Framework и .NET Core версий более ранних версий, чем 2.1. Параметр path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

Параметр path имеет значение null.

Указан недопустимый диск.

Файл, описываемый параметром path, не найден.

При открытии файла произошла ошибка ввода-вывода. Например зашифрованный файл уже открыт.

-или-

Эта операция не поддерживается на текущей платформе.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

Текущая операционная система не является системой Windows NT или более поздней версии.

Файловая система не является системой NTFS.

Параметр path указывает файл, доступный только для чтения.

-или-

Эта операция не поддерживается на текущей платформе.

-или-

Параметр path указывает каталог.

-или-

У вызывающего объекта отсутствует необходимое разрешение.

Примеры

В следующем примере кода для шифрования EncryptDecrypt и расшифровки файла используются методы и методы . Файл должен существовать, чтобы пример работал.

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

Комментарии

Метод Decrypt позволяет расшифровать файл, зашифрованный с помощью Encrypt метода . Метод Decrypt может расшифровать только файлы, которые были зашифрованы с помощью текущей учетной записи пользователя.

Важно!

Этот API поддерживается только на платформах Windows, которые могут использовать файловую систему ntfs Encrypting File System (EFS). Любая попытка использовать эту функцию на дисках, отличных от Windows, Windows Home Edition или на дисках без NTFS, в PlatformNotSupportedExceptionNotSupportedExceptionзависимости от ситуации приводит к или .

Использовать этот API в .NET Core не рекомендуется; Он включается для обеспечения переносимости приложений, которые переходят на .NET Core, но по-прежнему явно ориентированы на Windows.

Метод Decrypt требует монопольного доступа к расшифровываемым файлу и вызывает исключение, если файл используется другим процессом.

Encrypt Метод и Decrypt метод используют поставщик служб шифрования (CSP), установленный на компьютере, и ключи шифрования файлов процесса, вызывающего метод .

Текущая файловая система должна быть отформатирована как NTFS, а текущая операционная система должна быть Windows NT или более поздней версии.

Применяется к