我正在为管理多种数据备份的内部软件开发小规模部署系统。部分任务是备份某些文件夹,我想备份应用于这些文件夹的 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/