在这个问题中,我寻找了一个简单的解决方案来解封文件。
感谢所有的评论和答案,我通过 PInvoking
它有效,但由于我从未使用过 PInvoke(Win32)进行文件操作,我不知道是否存在一些陷阱或者是否有其他调用
我还不知道是否需要将调用包装在 try/catch 中,或者只需查看布尔结果是否足够。在我的测试中没有引发异常,但我不知道在现实世界中会发生什么。
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");
}
}
这段代码看起来可靠吗?
更新
我之前发布的方法是不完整的(unblock方法没有将"Zone.Identifier"链接到文件名)。我已经纠正了这个问题,抱歉。