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