使用StgOpenStorage打开OLE组合文档只读

我正在使用XP下的StgOpenStorage API来读取一个OLE复合文档,但我找不到正确的标志混合告诉Windows,我只需要读取文件,而不阻止访问到任何其他进程…
现在我正在使用STGM_READ | STGM_EXCLUSIVE STGM_READ | STGM_EXCLUSIVE但很明显,如果在同一时间,我尝试从另一个应用程序打开文件,它抱怨拒绝访问..所以我试着用STGM_READ | STGM_SHARE_DENY_NONE STGM_READ | STGM_SHARE_DENY_NONE但它抱怨无效的标志..

有没有办法做到这一点? 我走错路了吗?

提前致谢!

(我通过pythoncom从Python调用API,如果它是相关的)

Solutions Collecting From Web of "使用StgOpenStorage打开OLE组合文档只读"

这是一个猜测,但从StgOpenStorage API文档:

 When the STGM_DIRECT flag is specified, only one of the following combination of flags may be specified from the access and sharing groups. STGM_READ | STGM_SHARE_DENY_WRITE STGM_READWRITE | STGM_SHARE_EXCLUSIVE STGM_READ | STGM_PRIORITY Be aware that direct mode is implied by the absence of STGM_TRANSACTED. That is, if neither STGM_DIRECT nor STGM_TRANSACTED is specified, STGM_DIRECT is assumed. 

这表明改变标志

 STGM_READ | STGM_SHARE_DENY_NONE | STGM_TRANSACTED 

应该做你想做的。 这是有道理的:在“直接”模式下,如果有人可以开始写入存储,那么他们会覆盖我们正在阅读的内容。