C#I/O异常”;此计算机已禁用文件加密. ”;

本文关键字:加密 文件 异常 C#I 计算机 | 更新日期: 2023-09-27 18:20:06

我正在实现一个简单的C#控制台应用程序,用于加密或解密给定的文件。这里我使用的是.net框架的内置方法。请看下面的程序,它显示了负责处理加密和解密操作的类。

class FileHandler
{
    string fileToHandle = null;//name of the file
    private Boolean isEncrypted = false;//yes or no
    public FileHandler(string fileToHandle)
    {
        this.fileToHandle = fileToHandle;
    }
    //encrypt the current file
    public void encrypt()
    {
        if (!isEncrypted)
        {
            try
            {
                File.Encrypt(fileToHandle);
            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine(e.StackTrace);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.StackTrace);
                Console.WriteLine(e.Message);
            }
        }
    }
    //decrypt the current file
    public void decrypt()
    {
        if (isEncrypted)
        {
            try
            {
                File.Decrypt(fileToHandle);
            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine(e.StackTrace);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.StackTrace);
                Console.WriteLine(e.Message);
            }
        }
    }
}

但是当我尝试使用encrypt()方法时,它以一个i/O错误结束,该错误声明消息"此机器已禁用文件加密。''r''n"。我在windows7企业版中使用.net framework 4.5。我的硬盘里有NTFS文件系统。

请帮我解决这个问题。

C#I/O异常”;此计算机已禁用文件加密.
”;

File.Encrypt执行NTFS文件加密。如果文件系统不是NTFS,或者您运行的用户无权修改NTFS设置(编辑:或禁用NTFS文件加密),则您将无法使用File.Encrypt功能。

试试这个:

[HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Windows NT'CurrentVersion'EFS]
EfsConfiguration=0 (dword)
LastGoodEfsConfiguration=0 (dword)

将双字值更改为1以禁用,将其更改为0以启用。