PowerPoint - Comment savoir si une présentation a un mot de passe par programme?

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

  •  03-07-2019
  •  | 
  •  

Question

J'écris une application qui traite les présentations PowerPoint et je cherche des moyens de détecter si une présentation PowerPoint a ou non un mot de passe si elle le fait, puis arrête de le traiter.

Était-ce utile?

La solution

Il me semble qu'il n'y a aucun moyen de vérifier si la présentation est protégée par un mot de passe. Vous devez d'abord ouvrir le document pour rendre les propriétés accessibles. Vous devez fournir le mot de passe lorsque vous ouvrez le document.

Il existe un propriété du mot de passe . peut vérifier.

J'ai trouvé un solution de contournement sur l'échange d'experts :

  

Le problème est le suivant: Visual   Basic est un seul thread   application , cela signifie que vous ne pouvez pas   mettre une certaine procédure en attente et   procéder avec un autre (dans le même   application). Lorsque PowerPoint a un   "sur le mot de passe ouvert", le   Procédure CreateObject dans votre   l'application est mise en attente jusqu'à ce que   PowerPoint le libère, c'est à ce moment   l'utilisateur tape un mot de passe. Il y a   aucun moyen de contourner ce que je sais,   mais vous pouvez faire une solution de contournement:

     

Créer 2 applications , 1 application est   l'application que vous avez déjà, la   la seconde est un "outil de déverrouillage PowerPoint".   Vous exécutez le deuxième programme juste avant   vous ouvrez le powerpoint protégé   présentation en application 1. Vous pouvez   faites-le avec la commande shell. le   "Unlocker PowerPoint" peut être comme   avancé comme vous le souhaitez, vous pouvez   par exemple, fournir une ligne de commande   paramètres pour spécifier lequel   la présentation doit être déverrouillée avec   quel mot de passe. Ensuite, vous utilisez le    api findwindow pour obtenir la fenêtre   handle de la présentation verrouillée .   Une fois que vous avez cela, vous utilisez le   sendmessage api pour saisir le mot de passe.   Après cela, le " PowerPointpoint unlocker "   décharges et la première application peut   reprendre avec son excution.

     

J'espère que cela aide!

     

Osmodean

Autres conseils

Envisagez de regarder ceci - http : //blogs.msdn.com/b/openspecification/archive/2009/07/17/overview-of-protected-office-open-xml-documents.aspx

Pour un document PPTX, vous pouvez examiner les 8 premiers octets pour examiner l'en-tête (devrait être [d0cf 11e0 a1b1 1ae1] pour un fichier crypté) et savoir s'il s'agit d'un fichier PPTX crypté ou non.

Cependant, pour les fichiers créés avec Office 2003 (extension par défaut .ppt), l'en-tête est le même (en-tête MS-CFB). Ainsi, si quelqu'un crée un document Office 2003 puis le renomme en PPTX, votre code le considérera comme un document crypté (alors que ce ne serait pas nécessairement un).

Si vous travaillez avec des documents déjà ouverts dans Powerpoint, vous pouvez utiliser la fonction SaveCopyAs pour d’abord enregistrer le document sur le disque au format pptx (utilisez l’option par défaut dans le second paramètre), puis examinez l’en-tête pour vérifier si c'est un fichier crypté.

Envisagez de regarder ceci - https://msdn.microsoft.com/ko -kr / library / dd948895 (v = office.12) .aspx

Pour un document PPT (office 2003), vous pouvez examiner le nombre entier non signé (bits 0xF3D1C4DF) pour déterminer si le fichier est crypté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top