Tag: alternate data stream

使用C#示例:在Win7 64位下编写和读取NTFS备用数据流

我希望能够使用备用数据流来存储我正在构建的数据库应用程序中引用的文件的某些同步信息。 但是,我在网上找到的每种方法都以这种或那种方式失败了。 在Win32 API编程中没有经验我不确定为什么会发生故障。 在某些情况下,方法调用似乎成功,只创建了备用流(即,我以后不能从备用文件中读取,AlternateStreamViewer也不能看到它)。 在其他情况下,写入成功,但读取失败,因为调用CreateFile()会导致无效的SafeFileHandle。 在这一点上,我只想找到一些有效的代码。 或者被告知“你不能从这里到达那里”。 在这种情况下,我将使用另一个不太吸引人的选项(例如,编码文件名本身的同步/参考信息,并希望没有人更改文件名)。 我理解我尝试过的方法的要求。 但是有很多(我花了几个小时),我真的很想学习我没有尝试过的产品。 但是,你是对的,它会有所帮助,因为事实certificate我正在使用其中一种方法 – 下面提到的Trinet – 不正确。 我认为问题是我还没有创建我试图保存备用流的“基础”文件。 这是我尝试的代码库的链接: 圣克罗伊船长 DevDump Trinet

这个PInvoke代码是否正确可靠?

在这个问题中,我搜索了一个解锁文件的简单解决方案。 感谢所有的评论和回答,我找到了PInvoking DeleteFile的简单解决方案。 它工作,但因为我从来没有通过PInvoke(Win32)使用文件操作,我不知道是否有一些陷阱或是否有另一种方法调用DeleteFile来删除文件的备用流。 我还不知道的是,我是否必须在try / catch中包装调用,或者仅仅查看布尔结果就足够了。 在我的测试中,没有提出exception,但我不知道在现实世界中会发生什么。 public class FileUnblocker { [DllImport(“kernel32”, CharSet = CharSet.Unicode, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool DeleteFile(string name ); public bool Unblock(string fileName) { return DeleteFile(fileName+ “:Zone.Identifier”); } } 这段代码看起来可靠吗? 更新 我发布了一个不完整的方法(unblock方法没有将“Zone.Identifier”文字连接到文件名)。 我现在纠正了这个,抱歉。

从.net 4 c#中取消阻止文件

是否有可能从ac#程序中取消阻止从Internet下载的文件。 浏览互联网我已经了解到,信息是在包含当前区域信息的(NTFS)文件的替代流中写入的(值3来自互联网并被解释为被阻止)。 是否有管理的可能性来清除或更改文件的区域信息(解除阻止),或者是否存在托管复制function来复制没有区域信息的文件? 如果没有,我如何处理PInvoke但不包括外部程序集(我不允许在当前项目中执行此操作)。