1

I hope you guys are well!

I am currently working with the MS OLEPS as stated in the title. Here the documentation I'm using : https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-oleps/bf7aeae8-c47a-4939-9f45-700158dac3bc

Basically, the goal I'm trying to achieve here is to retrieve some custom properties from a document (a part document from Autodesk Inventor) , without openning it with the software itself (to go faster since there is a ton of docs to loop through). So far I got to get to the correct property set & retrieve the string properties. Here bellow an example output (in baguette language):

-------------------------------------------------------------------
PropertySet: ♣Qm0qv30hP3udrkgvAaitm1o20d
BYTE ORDER: FEFF
VERSION:0000
VERSION:0A000200
CLSID: 40DCB5B6E396D211B7740060B0F159EF
PropertSet Count: 01000000
FMITD: 906958BB3EAFD31195A900A0C9B6E37A
Offset 44: 30000000
SIZE: 736
Properties Count: 11
Property Index + Offset: 01000000 / 112 / 02000000 /
Property Index + Offset: 00000080 / 120 / 13000000 /
Property Index + Offset: FF000000 / 128 / 1F000000 / _Private Model Information
Property Index + Offset: 00000000 / 192 / 01000000 /
Property Index + Offset: 08000000 / 240 / 03000000 /
Property Index + Offset: 09000000 / 248 / 03000000 /
Property Index + Offset: 0A000000 / 256 / 03000000 /
Property Index + Offset: 0B000000 / 264 / 03000000 /
Property Index + Offset: 0C000000 / 272 / 03000000 /
Property Index + Offset: 0D000000 / 280 / 03000000 /
Property Index + Offset: 10000000 / 288 / 1F000000 / <PartActiveColorStyle><Category>Miscellaneous</Category><StyleName>Par défaut</StyleName><Protein><MaterialId>InvGen-071</MaterialId><Scale>1,000000</Scale><Rotation>0,000000</Rotation></Protein></PartActiveColorStyle>

-------------------------------------------------------------------
PropertySet: ♣Ynltsm4aEtpcuzs1Lwgf30tmXf
BYTE ORDER: FEFF
VERSION:0000
VERSION:0A000200
CLSID: 40DCB5B6E396D211B7740060B0F159EF
PropertSet Count: 01000000
FMITD: B8AD299907643E41B3DCCB9AD2F564B7
Offset 44: 30000000
SIZE: 436
Properties Count: 7
Property Index + Offset: 01000000 / 72 / 02000000 /
Property Index + Offset: 00000080 / 80 / 13000000 /
Property Index + Offset: FF000000 / 88 / 1F000000 / Inventor User Defined Properties
Property Index + Offset: 00000000 / 164 / 04000000 /
Property Index + Offset: 03000000 / 344 / 1F000000 / NOUVELLE PROP 1
Property Index + Offset: 04000000 / 384 / 1F000000 / NOUVELLE PROP 2
Property Index + Offset: 05000000 / 424 / 40000000 / 0.152.86.218.147.86.1.0

My goal now is to tackle down the date properties, stored as a filetime structure (doc).

https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime Here an example :

Property Index + Offset: 05000000 / 424 / 40000000 / 0.152.86.218.147.86.1.0

But I can't for the love of me convert the 8 bytes (last 8 bytes in the chain above) into a correct system date. Those bytes correspond to : 13 march 1602.

  • 0.240.235.234.91.151.218.1 would correspond to 26 April 2024
  • 0.24.226.41.8.127.218.1 would correspond to 26 March 2024
  • 0.88.231.91.62.104.218.1 would correspond to 26 February 2024

Has any one ever made it ? Doesn't any one have any hint on this? Can we maybe use the structure from the link using vb.net ?

Thank you & kind regards, FINET L.

A lot of trial/error

1
  • From the documentation you linked: "To convert a FILETIME structure into a time that is easy to display to a user, use the FileTimeToSystemTime function." Commented Jul 7, 2024 at 22:56

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.