Frage

Systembeschreibung

Eine Plotten Komponente, die OOXML verwendet ein Dokument zu erzeugen.

Plotten Komponente besteht aus mehreren Teilen. Alle Teile sind in C ++ als exe + DLL geschrieben, mit Ausnahme der Schnittstelle zum OOXML-Dokument. Die letztere Komponente ist eine COM-Komponente, die in C # /. NET erstellt wurden. Der Hauptgrund dafür ist, dass der .NET-Framework enthält System.IO.Packaging . Dies ist eine sehr handliche Einbau-Anlage für mit OOXML-Dokumenten handeln.

Wir erstellen ein Dokument aus einer Vorlage OOXML Dokument, in dem bestimmte Bits und Stücke von ihren eigentlichen Inhalt ersetzt werden.

Eines dieser Bits ist ein OLE-Server-Komponente. Im Grunde genommen ist dies ein Binär-Segment innerhalb der OOXML Datei. Für dieses Binär-Segment zu schreiben, verwendet die Verpackungskomponente scheinbar isolierte Speicher.

Problem

Schreiben eines Segments> 8MB ergibt eine Ausnahme ausgelöst werden „Kann nicht die Identität der Domäne bestimmen“.

in der C ++ Seiten Diese Ausnahme der Fehler enthält ISS_E_ISOSTORE (0x80131450).

Wir haben diese analysiert und soweit wir sagen können, ist dies ein Sicherheitsmerkmal, das aus halb nicht vertrauenswürdigen Drittanbieter-Komponente verhindert vollständig Ihre HD durch immense Dateien zu ruinieren zu schreiben.

Wir haben dann versucht, eine Menge Dinge in .NET / COM-Komponente (benutzerdefinierte AppDomains erstellen, Attribute für maximale Permissivität, Erstellen von eigenen Streams und vorbei diejenigen die Verpackungskomponente Einstellung), aber jedes Mal in Folge in der gleichen Ausnahme geworfen.

Was können wir tun, um diese Arbeit zu machen?

Könnte es sein, dass, wenn die .NET-Komponente als COM-Komponente instanziiert wird, sein AppDomain alway nicht vertrauenswürdig ist?

War es hilfreich?

Lösung

Sie könnten versuchen, das Paket selbst (anstelle der Verwendung des .NET-Paket API) zu entpacken, schreiben Sie direkt in die Datei, die das binäre Segment darstellt und zip es wieder.

Andere Tipps

Sie sollten den Titel dieser Frage ändern, da Ihr Problem nicht OOXML verwandt ist.

Anders als das: welches System sind Sie auf, dass 8 MB Datenmengen arbeiten führt das Risiko von Ihrer Festplatte in Höhe von insgesamt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top