I've tried a lot of different implementations to handle structured storage (most of them with P/Invoke). At last I tried also the “Microsoft.VisualStudio.OLE.Interop” assembly like you described here. I managed to implement a lot. But I could not get all the values out of the PROPVARIANT.unionmember. Strings and 4 byte data types seemed to have worked, but FILETIME I couldn't extract. Do you have a sample project, where I could learn how to use the PROPVARIANT.unionmember?