使用 StgOpenStorage 以只读方式打开 OLE 复合文档
我在 XP 下使用 StgOpenStorage API 来读取 OLE 复合文档,但我找不到正确的标志组合来告诉 Windows 我只需读取该文件而不阻止对其的访问到任何其他进程...
现在我正在使用 STGM_READ | STGM_EXCLUSIVE
但显然,如果我同时尝试从另一个应用程序打开该文件,它会抱怨访问被拒绝。所以我尝试使用 STGM_READ | STGM_EXCLUSIVE STGM_SHARE_DENY_NONE
但它抱怨无效的标志。
有没有办法做到这一点? 我是不是走错路了?
提前致谢!
(如果相关的话,我正在通过 pythoncom 从 Python 调用 API)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个猜测,但来自 StgOpenStorage API 文档:
这表明将标志更改为
应该执行您想要的操作。 这是有道理的:在“直接”模式下,如果任何人可以开始写入存储,那么他们就会覆盖我们正在读取的内容。
This is a guess, but from the StgOpenStorage API documentation:
This suggests that changing the flags to
should do what you want. This makes sense: in 'direct' mode, if anyone could start writing to the storage, then they would overwrite what we were reading.