PowerPoint - Как я могу программно определить, есть ли у презентации пароль?

StackOverflow https://stackoverflow.com/questions/215946

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Я нашел обходной путь при Обмене экспертами:

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

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

Я надеюсь, что это поможет!

Осмодиан

Другие советы

Подумайте над этим - 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 (используйте параметр по умолчанию во втором параметре), а затем проверить заголовок, чтобы проверить, это зашифрованный файл.

Подумайте над этим - https://msdn.microsoft.com/ko -kr / библиотека / dd948895 (v = office.12) .aspx

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top