2009-06-30 7 views
2

Ich möchte verschlüsselte OOXML-Dateien öffnen, die als Streams in einer zusammengesetzten OLE-Datei gespeichert sind. Microsoft eine API für OOXML hat, (OOXML Format SDK 2.0, aber es scheint eine Art und Weise fehlen verschlüsselte OOXML-Dokumente zu manipulieren. So bricht diese in zwei Fragen.Wie öffnest du verschlüsseltes OOXML-Dokument in C#?

  • Wie Sie offene Verbindung OLE-Dokumente in C# tun? Ich fand diese sehr ähnliche Frage, (reading compound documents in C#), aber ich habe gehofft, dass es vielleicht eine saubere und generische Art und Weise, es zu tun, dass ich verpaßt.

  • gibt es einen High-Level-Weg, um den EncryptedPackage Strom innerhalb des OLE zu entschlüsseln Dokument? Die zwei besten Referenzen, die ich gefunden habe, sind Decrypting Office Documents und MS-OFFCRYPTO Examples. "Entschlüsseln von Office-Dokumenten" scheint erfolgreich zu entschlüsseln, aber es stützt sich auf eine externe DLL (Lyquidity.OleStorage.dll), um das OLE-Dokument zu öffnen, und funktionierte nicht für mich. "MS-OFFCRYPTO Examples" hat ein Beispiel in C#, um den Stream zu entschlüsseln, verwendet aber ein C++ - Beispiel, um den Stream zu erhalten. Beide Referenzen sehen so aus, als ob sie funktionieren, aber gibt es eine API auf höherer Ebene, die dasselbe tut?

+0

ähnlicher Frage: http://stackoverflow.com/questions/1502781/read-write-excel-2007-password-protected-documents – dbkk

Antwort

1

Kurze Antwort: Nein, es gibt keine höhere Ebene API. Lange Antwort: das MS-OFFCRYPTO Examples ist das beste Beispiel, wie es zu entschlüsseln, aber Sie müssen eine Bibliothek verwenden (oder eigene erstellen) für die Interaktion mit dem OLE-Dokument. Es gibt viele Bibliotheken für OLE Structured Storage wie OpenMCDF und die Bibliothek von GemBox Software