3

有一个有趣的问题,由于某种原因,当我们的客户将我们的应用程序部署到他们的计算机上(文件复制部署)时,Windows 阻止了所有文件。这可以通过右键单击文件,转到属性,然后有标题为“取消阻止”的按钮来检测。

我相信这是当文件从互联网等未知来源传输到计算机时引起的。

有没有办法可以检测到文件在 C# 中被阻止?我不确定这个“操作系统块”是否设置了特定的文件属性或其他东西。也可以以某种方式解锁文件吗?

注意:我知道用于检查文件是否被阻止的 .exe 文件本身可能被阻止的悖论,但我希望我的用户至少可以从安装集中取消阻止一个文件!

4

1 回答 1

2

在 Windows 中,此功能是使用带有区域标识符的备用数据流实现的。(请参阅此处的 Hanselman 的解释)。您只需要检测 3 或 4 的区域标识符,这表明文件被阻止。

要与数据流交互,您可以使用 Windows API CreateFile 函数并传入:Zone.Identifier文件名(如本问题所示),或者更好的是,只需使用CodeProject的这个库为您完成。

于 2013-07-08T13:22:45.847 回答