gpt4 book ai didi

c - 如何通过pdf阅读器找出pdf文件是否为 "blocked"

转载 作者:行者123 更新时间:2023-11-30 15:06:28 25 4
gpt4 key购买 nike

在我们的应用程序中,您可以将(例如)pdf 文件导入到应用程序区域中。在定义 pdf 文件路径的弹出窗口中,您可以指定成功导入后是否删除原始文件。

有时,用户会导入一个 pdf 文件,他也会在 pdf 阅读器(在我们的例子中为 pdf xchange 查看器和 Foxit 阅读器)中“打开”该文件。在这种情况下,我们的应用程序无法删除 pdf 文件,因为它被某种方式阻止了。

我怎样才能找到 - 例如 winapi 调用? (无需尝试删除或重命名)该 pdf 被 pdf 阅读器阻止?

提前非常感谢

最佳答案

虽然干扰其他程序不好(只需告诉用户文件正在被使用),但释放文件锁有点困难。

  • 首先,您需要使用ZwQuerySystemInformation获取系统范围的文件句柄表(并且您的程序需要SeDebug权限)并找到正在使用的文件。

    • 使用 DuplicateHandleDUPLICATE_CLOSE_SOURCE 标志来复制并关闭文件句柄。

    • 或者,进入内核并使用 ZwClose 或 ObDereference 函数关闭文件。

不过,关闭外部文件可能会使远程程序崩溃,这违反了 Windows 的设计原则。

关于c - 如何通过pdf阅读器找出pdf文件是否为 "blocked",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38976650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com