PowerPoint - Как я могу определить, есть ли у презентации программный пароль? - PullRequest
3 голосов
/ 19 октября 2008

Я пишу приложение, которое обрабатывает презентации PowerPoint, и я ищу способы определить, есть ли в презентации PowerPoint пароль, если он есть, а затем прекратить его обработку.

Ответы [ 3 ]

3 голосов
/ 19 октября 2008

Мне кажется, что невозможно проверить , защищена ли презентация паролем. Сначала нужно открыть документ, чтобы сделать свойства доступными. Вы должны предоставить пароль при открытии документа.

Существует Свойство пароля , которое вы можете проверить.

Я нашел обходной путь на Expert Exchange :

Проблема заключается в следующем: Visual Basic однопоточный приложение , это означает, что вы не можете приостановить определенную процедуру и продолжить с другим (в том же приложение). Когда PowerPoint имеет «на открытое» - пароль Процедура CreateObject внутри вашего заявка приостановлена ​​до PowerPoint выпускает его, это когда пользователь вводит пароль. Есть Я не знаю, как это обойти, но вы можете сделать обходной путь:

Сделать 2 заявки , 1 заявка приложение у вас уже есть, второй - «разблокировщик powerpoint». Вы запускаете вторую программу непосредственно перед вы открываете защищенную PowerPoint презентация в приложении 1. Вы можете сделать это с помощью команды оболочки. "разблокировка powerpoint" может быть как продвинутым, каким вы хотите, вы можете например, предоставьте командную строку параметры, чтобы указать, какие презентация должна быть разблокирована какой пароль Затем вы используете findwindow api, чтобы получить окно ручка заблокированной презентации . Получив это, вы используете sendmessage api для ввода пароля. После этого "PowerPoint Unlocker" выгружается и первое приложение может возобновить с его извинением.

Надеюсь, это поможет!

Osmodean

1 голос
/ 26 июля 2012

Посмотрите на это - http://blogs.msdn.com/b/openspecification/archive/2009/07/17/overview-of-protected-office-open-xml-documents.aspx

Для документа PPTX вы можете проверить первые 8 байтов, чтобы посмотреть заголовок (для зашифрованного файла это должно быть [d0cf 11e0 a1b1 1ae1]), и узнать, является ли он зашифрованным PPTX или нет.

Однако для файлов, созданных с помощью Office 2003 (расширение по умолчанию .ppt), заголовок такой же (заголовок MS-CFB). Итак, если кто-то создает документ Office 2003, а затем переименовывает его в PPTX, ваш код будет рассматривать его как зашифрованный документ (тогда как он не обязательно будет таким).

Если вы работаете с документами, уже открытыми в Powerpoint, вы можете использовать функцию SaveCopyAs, чтобы сначала сохранить документ на диск в формате pptx (используйте параметр по умолчанию во втором параметре), а затем проверить заголовок, чтобы проверить, это зашифрованный файл.

0 голосов
/ 11 ноября 2016

Посмотрите на это - https://msdn.microsoft.com/ko-kr/library/dd948895(v=office.12).aspx

Для документа PPT (office 2003) можно проверить целое число без знака (биты 0xF3D1C4DF), чтобы определить, зашифрован ли файл.

...