Creo que va a depender de la versión de Microsoft Word. Las versiones anteriores de Word (antes de 2007) requerirán alguna interoperación COM, ya que no se guardan en un formato abierto. No hay nada que pueda hacer para evitar eso, y siento sus frustraciones con la instalación de cualquier cosa de Office en un servidor web. Además, creo que la única forma de detectar la protección con contraseña en estos casos es intentar abrir/desproteger el archivo y detectar una cierta excepción (es posible que tenga que evaluar más a fondo un código de error dentro de la excepción). ¡No es bonito!
Sin embargo, hay nuevas versiones de la palabra (2007+) guardados en el formato DOCX abierta (Standard ECMA-376), se puede examinar el XML y comprobar la existencia del elemento DocumentProtection
con el atributo w:enforcement
define como "on" ..
<w:DocumentProtection
w:edit="read-only"
w:enforcement="on"
w:unprotectPassword="1FC6CBEB"/>
Nota: La contraseña que se muestra aquí está encriptada (obviamente); Guardé este documento en particular con una contraseña de "prueba".
re: prevención ... Bueno, existen restricciones de licencia en las aplicaciones de Office y no siempre es fácil convencer a un administrador de servidor de instalar MS Office en un servidor, especialmente cuando la interoperabilidad de MS-Office que se ejecuta en ASP.NET a menudo conduce a cientos de procesos exel.exe y word.exe en el servidor. – MatthewMartin
Eso es solo otro problema para resolver, no un bloqueador completo. Si tiene suficientes necesidades comerciales, sus administradores tendrán que ceder a eso (y debe lidiar con las ramificaciones); si no, entonces necesitas encontrar una solución diferente. –
um. ¡no! La ejecución de Office en el servidor es una configuración no compatible y algo mejor para los administradores de hackers dudosos. Si estás tratando de resolver ese problema, estás resolviendo el problema equivocado. –