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和 2.1 之前的 .NET Core 版本:參數 path 是長度為零的字串、只包含空白字元,或包含一或多個無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。

path 參數為 null

指定的磁碟機無效。

找不到 path 參數所描述的檔案。

開啟檔案時發生 I/O 錯誤。 例如,加密的檔案已經開啟。

-或-

這個作業在目前平台不受支援。

指定的路徑、檔案名稱,或兩者都超出系統定義的長度上限。

目前的作業系統不是 Windows NT 或更新版本。

檔案系統不是 NTFS。

path 參數指定了唯讀的檔案。

-或-

這個作業在目前平台不受支援。

-或-

path 參數指定了目錄。

-或-

呼叫端沒有必要的權限。

範例

下列程式碼範例會 Encrypt 使用 方法和 方法 Decrypt 來加密和解密檔案。 檔案必須存在,範例才能運作。

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 只能解密使用目前使用者帳戶加密的檔案。

重要

只有能夠使用 NTFS 加密檔案系統 (EFS) 的 Windows 平臺才支援此 API。 任何嘗試在非 Windows 系統、Windows Home Edition 系統或非 NTFS 磁片磁碟機上使用此功能,都會導致 PlatformNotSupportedExceptionNotSupportedException ,視情況而定。

不建議在 .NET Core 中使用此 API;它包含在內,可針對移至 .NET Core 但仍然明確以 Windows 為目標的應用程式啟用可攜性。

方法 Decrypt 需要解密檔案的獨佔存取權,如果另一個進程正在使用檔案,則會引發例外狀況。 如果檔案未加密, Decrypt 則會傳回非零值,表示成功。

方法與 Decrypt 方法都會 Encrypt 使用安裝在電腦上的密碼編譯服務提供者 (CSP) ,以及呼叫 方法之進程的檔案加密金鑰。

目前的檔案系統必須格式化為 NTFS,而且目前的作業系統必須Windows NT或更新版本。

適用於