在this question我已经搜索了解封文件的简单解决方案。 感谢所有的评论和回答,我找到了一个简单的解决方案PInvoking DeleteFile
。这个PInvoke代码是否正确可靠?
它的工作原理,但因为我从来没有通过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”文本的文件名)。我现在纠正了这个,对不起。
给谁就给谁经历了盲目downvoted答案:有解释为什么答案是错的礼貌。 – 2011-06-16 18:34:49
@Chris实际上我想知道的是谁提出了2个答案:1)没有什么比给出相同的P/Invoke签名,在一个例子中使用Ansi字符串和2)没有解决这个问题以任何方式。 – 2011-06-16 18:38:37
我做到了,你永远不会抓到我。嗯哈哈。 > :) – 2011-06-16 18:40:13