You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中使用File.Encrypt遇请求不支持异常,求解决方法

解决File.Encrypt抛出"This request is not supported"异常的方案

核心原因分析

File.Encrypt依赖Windows的加密文件系统(EFS),抛出该异常通常是以下场景之一:

  • 目标文件所在磁盘分区不是NTFS格式(比如FAT32/ExFAT),EFS仅支持NTFS。
  • 当前Windows版本不支持EFS(部分精简版/特殊版本系统会阉割该功能),或用户无EFS使用权限。
  • 文件存储在网络共享、虚拟磁盘、非NTFS格式U盘这类不支持EFS的存储介质上。
  • 文件处于被占用状态(你用File.AppendAllText写完后会自动释放句柄,这个概率较低)。

分步解决步骤

1. 检查磁盘分区格式

右键目标文件所在磁盘 → 属性,确认文件系统为NTFS。若为其他格式,需转换为NTFS(转换前请备份数据,操作不可逆):

convert D: /fs:ntfs

(将D:替换为你的目标分区盘符)

2. 确认EFS功能可用

  • 专业版/企业版Windows默认支持EFS;家庭版Windows 10/11需手动启用:
    1. 按下Win+R,输入gpedit.msc打开组策略编辑器。
    2. 导航到计算机配置→管理模板→系统→文件系统→加密文件系统。
    3. 找到允许EFS在所有版本的Windows上使用,设置为已启用后重启系统。
  • 域环境下需联系管理员确认是否允许用户使用EFS。

3. 确保文件未被占用

可以显式管理文件句柄,避免极端情况下的缓存占用:

using (var writer = new StreamWriter(settingsPath, true))
{
    writer.WriteLine("Save_System;");
    writer.WriteLine("Game_Sessions;");
    writer.WriteLine("Sound;");
    writer.WriteLine("User_OS;");
}
File.Encrypt(settingsPath);

替代方案(EFS不可用时)

若无法使用EFS,建议用对称加密算法(如AES)手动加密文件内容,示例代码:

using System.Security.Cryptography;
using System.Text;

// 加密方法
public static void EncryptFile(string filePath, string password)
{
    byte[] salt = Encoding.UTF8.GetBytes("YourCustomSalt"); // 自定义盐值,建议随机生成
    using (Aes aes = Aes.Create())
    {
        Rfc2898DeriveBytes keyDeriver = new Rfc2898DeriveBytes(password, salt, 10000);
        aes.Key = keyDeriver.GetBytes(aes.KeySize / 8);
        aes.IV = keyDeriver.GetBytes(aes.BlockSize / 8);

        using (FileStream fs = new FileStream(filePath, FileMode.Open))
        using (FileStream fsEncrypted = new FileStream(filePath + ".encrypted", FileMode.Create))
        using (CryptoStream cs = new CryptoStream(fsEncrypted, aes.CreateEncryptor(), CryptoStreamMode.Write))
        {
            fs.CopyTo(cs);
        }
        // 可选:删除原文件
        File.Delete(filePath);
    }
}

// 使用示例
EncryptFile(settingsPath, "YourStrongPassword123");

内容的提问来源于stack exchange,提问作者Xale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:27:21