В ASP.NET, как я обнаруживаю пароль, одним словом, 2003 или файл 2007 года?

Моим пользователям нравится загружать защищенные паролем документы Word в нашу пользовательскую систему управления документами. Я хотел бы добавить проверку, чтобы проверить на пароль и отказаться от загрузки, если это имеет пароль.

Автоматизация Word - со взаимодействующим с COM - вне рассмотрения, потому что это - серверное приложение.

6
задан Todd Main 22 July 2010 в 17:30
поделиться

3 ответа

К сожалению, он недоступен напрямую из .NET или DSOFile.dll , но вы можете создать оболочку в .NET для чтения свойства PIDSI_DOC_SECURITY любого файла Office, чтобы узнать, защищен ли он паролем, не открывая документ. Существует ряд примеров C ++ , которые можно перенести с определением iPropertyStorage .

Пример оболочки находится на TechTarget , но оболочка кажется недоступной.

5
ответ дан 10 December 2019 в 00:35
поделиться

Думаю, это будет зависеть от версии Microsoft Word. Более старые версии Word (до 2007 г.) потребуют некоторого взаимодействия с COM, поскольку они не сохраняются в открытом формате. Вы ничего не можете сделать, чтобы обойти это, и я чувствую ваше разочарование при установке чего-либо Office на веб-сервере. Кроме того, я считаю, что единственный способ обнаружить защиту паролем на них - это попытаться открыть / снять защиту с файла и перехватить определенное исключение (возможно, вам также придется дополнительно оценить код ошибки в этом исключении). Не очень!

Однако для более новых версий Word (2007+), сохраненных в открытом формате DOCX ( Standard ECMA-376 ), вы можете изучить XML и проверить наличие DocumentProtection с атрибутом w: принудительное применение , установленным на «on» ...

<w:DocumentProtection
   w:edit="read-only"
   w:enforcement="on"
   w:unprotectPassword="1FC6CBEB"/>

Примечание: пароль, показанный здесь, зашифрован (очевидно); Я сохранил этот конкретный документ с паролем «test».

5
ответ дан 10 December 2019 в 00:35
поделиться

Вы хотите сказать, что хотите открывать / изучать документы Word, вообще не используя взаимодействие с Office? Удачи!

Возможно, единственное место для начала - это вручную проанализировать docx (спецификация опубликована здесь ). На самом деле, я бы посоветовал вам укусить пулю и использовать библиотеки взаимодействия Office, потому что это гораздо более легкое требование, чем самостоятельный анализ документа. Нет ничего, что внутренне мешало делать это в серверном приложении.

0
ответ дан 10 December 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: