File.Encrypt(String) 方法

定义

加密文件,以便只有用于加密文件的帐户才能解密该文件。

public:
 static void Encrypt(System::String ^ path);
public static void Encrypt(string path);
static member Encrypt : string -> unit
Public Shared Sub Encrypt (path As String)

参数

path
String

描述要加密的文件的路径。

例外

.NET Framework 和 2.1 之前的 .NET Core 版本:path 参数为零长度字符串,仅包含空格或包含一个或多个无效字符。 可以使用该方法 GetInvalidPathChars() 查询无效字符。

参数 pathnull.

指定了无效驱动器。

找不到参数描述 path 的文件。

打开文件时出现 I/O 错误。

-或-

当前平台上不支持此操作。

指定的路径、文件名或两者都超过了系统定义的最大长度。

当前操作系统不是 Windows NT 或更高版本。

文件系统不是 NTFS。

参数 path 指定了只读文件。

-或-

当前平台上不支持此操作。

-或-

参数 path 指定了目录。

-或-

调用方没有所需的权限。

示例

下面的代码示例使用 Encrypt 该方法和 Decrypt 方法加密,然后解密文件。 必须存在该文件才能使示例正常工作。

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

注解

该方法 Encrypt 允许加密文件,以便只有用于调用此方法的帐户才能解密它。 使用该方法 Decrypt 解密由 Encrypt 该方法加密的文件。

Important

此 API 仅在能够使用 NTFS 加密文件系统(EFS)的Windows平台上受支持。 在非Windows系统上、Windows家庭版系统或非 NTFS 驱动器上使用此方法的任何尝试都会导致PlatformNotSupportedExceptionNotSupportedException,具体取决于情况。

不建议在 .NET Core 中使用此 API;它包括为迁移到 .NET Core 但仍以显式目标Windows的应用程序启用可移植性。

该方法 Encrypt 需要对正在加密的文件进行独占访问,如果另一个进程正在使用该文件,则此方法将失败。

Encrypt该方法和Decrypt方法都使用计算机上安装的加密服务提供程序(CSP),以及调用该方法的进程的文件加密密钥。

此方法在所有版本的Windows上都不可用。 例如,它在家庭版上不可用。

当前文件系统的格式必须为 NTFS。

适用于