2016-08-03 5 views
0

Ich habe eine Anwendung, die Passwörter für .xlsx-Dateien algorithmisch basierend auf benutzerdefinierten Dokumenteigenschaften generiert. Die Persistenz der Eigenschaften wird sichergestellt, indem der Schlüssel openxmllencryptproperty auf false gesetzt wird. Daher ist der Dateiinhalt passwortgeschützt, aber die Eigenschaften sind sichtbar (via Explorer).Ohne Öffnen, wie kann ich OpenXML-Dokumenteigenschaften von kennwortgeschützten Dateien programmgesteuert lesen?

Die beabsichtigte Funktionalität ist, dass das Passwort aus den Eigenschaften, bevor neu berechnet wird, um die Arbeitsmappe zu öffnen. Leider kann ich die Arbeitsmappe nur über System.IO.Packaging oder OpenXml.Packaging öffnen.

Clear Explorer kann diese Eigenschaften lesen, ohne die Datei tatsächlich zu öffnen. Wie kann ich dieses Verhalten in C# replizieren? (vielleicht eine Instanz des Explorers aufrufen?).

+1

Ich bin ziemlich sicher, Explorer hat eine [Metadata Handler] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb761474 (v = vs.85) .aspx), die das liest Datei. Es gibt keine Magie. – rene

Antwort

0

Nach verschiedenen Versuchen, die Eigenschaften zu nutzen, um den Microsoft.WindowsAPICodePack-Shell API, den einzigen Weg, ich in der Lage war zu Gewohnheit bekommen Eigenschaften über den StructuredStorage API waren, wie im zweiten Teil von this akzeptierter Antwort, die in dem Code-Schnipsel demonstriert eine ähnliche Frage.

Verwandte Themen