在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