HCL*_*HCL 29 .net c# pinvoke .net-4.0 alternate-data-stream
是否有可能从ac#program中取消阻止从Internet下载的文件.浏览互联网我已经了解到,信息是在包含当前区域信息的(NTFS)文件的替代流中写入的(值3来自互联网并被解释为被阻止).
是否有管理的可能性来清除或更改文件的区域信息(解除阻止),或者是否存在托管复制功能,复制没有区域信息的文件?如果没有,我如何处理PInvoke但不包括外部程序集(我不允许在当前项目中执行此操作).
HCL*_*HCL 34
根据您的输入,我完成了以下代码:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
感谢Stuart Dunkeld,Alex K(+1)和Sven向我展示了方向.
更新 我已在此处发布代码,以获得反馈,以确保它在生产环境中可靠运行.如果有人想使用它,请查看那里.
管理此标识符的官方方法是使用PersistentZoneIdentifier COM对象:http://msdn.microsoft.com/en-us/library/ms537029(v = vs.85).aspx