我认为它将取决于Microsoft Word的版本.旧版本的Word(2007年之前)将需要一些COM互操作,因为它们不是以开放格式保存的.你无法做到这一点,我觉得你在Web服务器上安装任何Office都感到沮丧.另外,我认为检测密码保护的唯一方法是尝试打开/取消保护文件并捕获某个异常(您可能还需要进一步评估异常中的错误代码).不漂亮!
但是,对于以开放DOCX格式(标准ECMA-376)保存的较新版本的单词(2007+),您可以检查XML并检查DocumentProtection
元素是否存在,并将w:enforcement
属性设置为"on"...
<w:DocumentProtection
w:edit="read-only"
w:enforcement="on"
w:unprotectPassword="1FC6CBEB"/>
Run Code Online (Sandbox Code Playgroud)
注意:这里看到的密码是加密的(显然); 我用密码"test"保存了这个特定文档.
不幸的是,它不能直接从.NET或DSOFile.dll中获得,但您可以在.NET中创建一个包装器来读取任何Office文件的PIDSI_DOC_SECURITY属性,以便在不打开文档的情况下查明它是否受密码保护.有许多C++样本可以移植到定义iPropertyStorage
.
一个包装的示例在TechTarget上,但包装似乎不可用.
归档时间: |
|
查看次数: |
426 次 |
最近记录: |