.net - 如何序列化 System.Security.AccessControl.FileSecurity?

标签 .net windows serialization acl

我正在为管理多种数据备份的内部软件开发小规模部署系统。部分任务是备份某些文件夹,我想备份应用于这些文件夹的 ACL,以便在恢复时文件仍能按预期工作。

制作一些代码的原型(prototype),我曾尝试使用 .NET 的内置 XmlSerializer,但无济于事。

示例代码如下:

public static byte[] SerializeFileACL(string path)
{
    var acl = File.GetAccessControl(path, AccessControlSections.All);

    using (var ms = new MemoryStream())
    {
        _fileSerializer.Serialize(ms, acl);
        return ms.ToArray();
    }
}

然而,无论我在什么文件上尝试,它都会返回相同的 143 字节。是否有使用 .NET 工具序列化 ACL 的好方法?我做错了什么?

P.S.:是的,我知道 ACL 可能不适用于其他计算机。这不是这个项目的问题。

最佳答案

您可以简单地调用NativeObjectSecurity.Persist 方法as described on MSDN序列化这个对象。正如有人提到的,该对象不包含 SerializableAttribute,因此您无法以友好的方式序列化对象图。

关于.net - 如何序列化 System.Security.AccessControl.FileSecurity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274306/

相关文章:

c# - 在我的 C# 代码中使用 .NET 4.0 元组是一个糟糕的设计决策吗?

windows - 由于证书服务器证书未使用 HTTP.SYS 正确配置而导致的 SSL 定期崩溃

windows - 颠覆 : How do you avoid forgetting to check stuff in?

java - 找不到类 java.util.logging.ErrorManager 的序列化程序,也没有发现用于创建 BeanSerializer 的属性

java - 序列化 DefaultTreeModel

c# - 使用动态对象时出现 RuntimeBinderException

c# - LINQ group by 然后排序结果组

javascript - Jquery的表单序列化发送重复信息

c# - 一个用于依赖注入(inject)(在 MVC 应用程序中)和简单 AOP 任务(使用属性)的框架

php - 如何强制apache崩溃?