PowerPoint - ¿Cómo puedo averiguar si una presentación tiene una contraseña programáticamente?
-
03-07-2019 - |
Pregunta
Estoy escribiendo una aplicación que procesa presentaciones de PowerPoint y estoy buscando formas de detectar si una presentación de PowerPoint tiene una contraseña o no, si la tiene, deja de procesarla.
Solución
Me parece que no hay forma de verificar si la presentación está protegida por contraseña. Tienes que abrir el documento primero para que las propiedades sean accesibles. Debe proporcionar la contraseña cuando abra el documento.
Hay una Propiedad de la contraseña puede comprobar.
He encontrado un solución en el intercambio de expertos :
El problema es el siguiente: Visual Básico es un solo hilo. aplicación , esto significa que no puedes poner un cierto procedimiento en espera y proceder con otro (en el mismo solicitud). Cuando powerpoint tiene un " en abrir " -password set, el Procedimiento CreateObject dentro de su la solicitud se pone en espera hasta Powerpoint lo libera, esto es cuando el usuario escribe una contraseña. Ahi esta No hay forma de evitar esto que conozco, pero puedes hacer una solución:
Hacer 2 aplicaciones , 1 aplicación es la aplicación que ya tienes, la el segundo es un " desbloqueador de powerpoint " ;. Usted ejecuta el segundo programa justo antes abres el powerpoint protegido presentación en la aplicación 1. Usted puede hacer eso con el comando shell. los " powerpoint unlocker " puede ser como Avanzado como quieras que sea, puedes por ejemplo proporcionar línea de comandos parámetros para especificar cuales la presentación debe ser desbloqueada con Que contraseña. Entonces usas el findwindow api para obtener la ventana Manejar de la presentación bloqueada . Una vez que tienes eso, utiliza la Sendmessage api para ingresar la contraseña. Después de esto, el " desbloqueador de powerpoint " descargas y la primera aplicación puede reanudar con su excución.
Espero que esto ayude!
Osmodean
Otros consejos
Considera mirar esto - http : //blogs.msdn.com/b/openspecification/archive/2009/07/17/overview-of-protected-office-open-xml-documents.aspx
Para un documento PPTX, puede examinar los primeros 8 bytes para ver el encabezado (debe estar [d0cf 11e0 a1b1 1ae1] para un archivo cifrado), y saber si es un PPTX cifrado o no.
Sin embargo, para los archivos creados con Office 2003 (extensión predeterminada .ppt), el encabezado es el mismo (encabezado MS-CFB). Por lo tanto, si alguien crea un documento de Office 2003 y luego lo cambia a PPTX, su código lo considerará como un documento encriptado (mientras que no necesariamente lo será).
Si está trabajando con documentos ya abiertos en Powerpoint, puede usar la función SaveCopyAs para guardar primero el documento en el disco en el formato pptx (use la opción predeterminada en el segundo parámetro), y luego examinar el encabezado para verificar si Es un archivo encriptado.
Considera mirar esto - https://msdn.microsoft.com/ko -kr / library / dd948895 (v = office.12) .aspx
Para un documento PPT (office 2003), puede examinar el entero sin signo (0xF3D1C4DF bits) para identificar si el archivo está cifrado.