فتح مستندات مركب OLE للقراءة فقط مع Stgopenstorage

StackOverflow https://stackoverflow.com/questions/1086814

  •  23-08-2019
  •  | 
  •  

سؤال

أنا أستخدم API Stgopenstorage ضمن XP لقراءة وثيقة مركب OLE، لكن لا يمكنني العثور على المزيج الصحيح من الأعلام لإخبار Windows بأنه أحتاج فقط إلى اقرأ الملف دون حظر الوصول إليه إلى أي عملية أخرى ...
الآن أنا أستخدم STGM_READ | STGM_EXCLUSIVE ولكن من الواضح أنه إذا حاولت في نفس الوقت فتح الملف من تطبيق آخر، فإنه يشكو من الوصول المنحد .. لذلك حاولت مع STGM_READ | STGM_SHARE_DENY_NONEلكنه يشكو من أعلام غير صالحة ..

هل هناك طريقة للقيام بذلك؟ هل سأذهب بطريقة خاطئة؟

شكرا مقدما!

(أنا أدعو API من بيثون عبر PythonCom، إذا كان ذلك ذا صلة)

هل كانت مفيدة؟

المحلول

هذا تخمين، ولكن من وثائق API Stgopenstorage:

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

يجب أن تفعل ما تريد. هذا منطقي: في وضع "مباشر"، إذا كان بإمكان أي شخص أن يبدأ الكتابة إلى التخزين، فسوف يقومون بالكتابة فوق ما كنا نقرأه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top