有一个有趣的问题,出于某种原因,当我们的客户将我们的应用程序部署到他们的计算机上(文件复制部署)时,Windows 阻止了所有文件。这可以通过右键单击文件,转到属性然后有标题为“取消阻止”的按钮来检测。
我认为这是文件从未知来源(例如互联网)传输到计算机时造成的。
有没有一种方法可以检测到文件在 C# 中被阻止?我不确定这个“操作系统 block ”是否设置了特定的文件属性或其他东西。也可以通过某种方式解锁文件吗?
注意:我知道用于检查文件是否被阻止的 .exe 文件本身可能被阻止的悖论,但我希望我的用户至少可以从安装集中取消阻止一个文件!
最佳答案
在 Windows 中,此功能是使用带有区域标识符的替代数据流来实现的。 (参见 Hanselman 的解释 here )。您只需要检测区域标识符 3 或 4,这表明文件已被阻止。
要与数据流交互,您可以使用 Windows API CreateFile 函数并传入 :Zone.Identifier
和文件名(如 this question 所示),或者更好的是,只需使用this library off of CodeProject为你做。
关于c# - 检测文件是否被操作系统阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17527347/