在这个问题中,我搜索了一个简单的解决方案来解锁文件。感谢所有的评论和回答,我通过 PInvoking 找到了一个简单的解决方案DeleteFile
。
它可以工作,但是因为我从未通过 PInvoke (Win32) 使用过文件操作,所以我不知道是否存在一些缺陷,或者是否有另一种调用方法DeleteFile
来删除文件的备用流。
我也不知道是否必须将调用包装在 try/catch 中,或者仅查看布尔结果是否就足够了。在我的测试中,没有出现异常,但我不知道现实世界会发生什么。
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");
}
}
这段代码看起来可靠吗?
更新
我发布了一个不完整的方法(解锁方法没有将“Zone.Identifier”文字连接到文件名)。我现在已经更正了,对不起。