PowerPoint - Comment savoir si une présentation a un mot de passe par programme?
-
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.
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é.