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

是否有可能从ac#程序中取消阻止从Internet下载的文件。 浏览互联网我已经了解到,信息是在包含当前区域信息的(NTFS)文件的替代流中写入的(值3来自互联网并被解释为被阻止)。

是否有管理的可能性来清除或更改文件的区域信息(解除阻止),或者是否存在托管复制function来复制没有区域信息的文件? 如果没有,我如何处理PInvoke但不包括外部程序集(我不允许在当前项目中执行此操作)。

它存储在:Zone.Identifier流( more < c:\theapp.exe:Zone.Identifier )中,您需要使用本机IO例程来操作它们,这里是一个托管包装器 。

根据您的输入,我已完成以下代码:

 public class FileUnblocker { [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool DeleteFile(string name); public bool Unblock(string fileName) { return DeleteFile(fileName + ":Zone.Identifier"); } } 

感谢Stuart Dunkeld,Alex K(+1)和Sven向我展示了方向。

更新我已在此处发布代码,以获得反馈,以确保它在生产环境中可靠运行。 如果有人想使用它,请查看那里。

管理此标识符的官方方法是使用PersistentZoneIdentifier COM对象: http : //msdn.microsoft.com/en-us/library/ms537029(v = vs.85).aspx