我如何序列化System.Security.AccessControl.FileSecurity?

我如何序列化System.Security.AccessControl.FileSecurity?,第1张

概述我如何序列化System.Security.AccessControl.FileSecurity?

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

原型一些代码,我已经尝试使用.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的好方法吗? 我究竟做错了什么?

在windows 10上避免使用Convert.Todouble('Infinity')的FormatException

如何使用fileSystemWatcher监视新驱动器

C#DriveInfo类导致windows错误popup窗口

向后兼容WPF应用程序创build使用点networking框架4.5

为什么Graphics :: DrawImage不像预期的那样拉伸图像?

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

将节点添加到树视图中的特定父节点(c#)

了解windows通用应用程序(UWP)中的扩展执行会话

问题与WPF C#应用程序产生两个主要的windows

如何在ListVIEw控件中显示animation图像

从C#中selectsql Server数据库中的特定logging

您可以简单地调用MSDN上描述的NativeObjectSecurity.Persist方法来序列化此对象。 正如一个人提到的对象不包含SerializableAttribute ,因此你不能以友好的方式序列化对象图。

XmlSerializer只保存对象的公共成员 – 它不会序列化DirectorySecurity类的任何成员,因为它没有任何公共成员。

还有其他序列化器可以保存非公有成员(例如, BinaryFormatter ),但是他们需要类型自己声明自己是可序列化的(即使用[Serializable]属性),并且DirectorySecurity类没有这个属性。 所以你不能使用直接序列化来保存它 – 你需要提取你想要保存的信息并存储它,而不是原始的对象。

总结

以上是内存溢出为你收集整理的我如何序列化System.Security.AccessControl.FileSecurity?全部内容,希望文章能够帮你解决我如何序列化System.Security.AccessControl.FileSecurity?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1291997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存