我正在为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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)