c#检测受密码保护的powerpoint

c#检测受密码保护的powerpoint,c#,powerpoint,C#,Powerpoint,伙计们。我有一个问题,我想检测powerpoint(仅ppt)文档是否受密码保护或不使用C。我现在可以检测到doc/docx/xls/xlsx/pptx,但无法检测到ppt。我在谷歌上搜索了很长时间,但没有找到更满意的答案。如果您知道如何解决此问题,请告诉我。这里有一种VBA方法,您可以进行调整: Sub TestForPassword() Dim oPres As Presentation On Error Resume Next Set oPres = Prese

伙计们。我有一个问题,我想检测powerpoint(仅ppt)文档是否受密码保护或不使用C。我现在可以检测到doc/docx/xls/xlsx/pptx,但无法检测到ppt。我在谷歌上搜索了很长时间,但没有找到更满意的答案。如果您知道如何解决此问题,请告诉我。

这里有一种VBA方法,您可以进行调整:

Sub TestForPassword()

    Dim oPres As Presentation

    On Error Resume Next
    Set oPres = Presentations.Open("c:\temp\open.pptx::xopen::")
    If Not Err.Number = 0 Then
        MsgBox "Blimey, you trapped the error!" _
            & vbCrLf & Err.Number & vbCrLf & Err.Description
    End If

End Sub
其思想是向.Open方法传递密码(在本例中为xopen)。 如果它是受密码保护的文件,并且您向其传递了正确的密码,则会打开该文件。 如果它受密码保护,而您传递的密码不正确,则会出现错误。 如果该文件没有密码保护,而您传递的密码不正确,则该文件仍然会打开,并且没有错误。

@Viral@Alex它在C#中也可以工作:


真正的问题是当文件同时受打开保护和编辑保护时。到目前为止,我还没有找到一个像样的c#解决方案来打开这样的文件。

幸运的是,我发现下面的代码能够打开受打开保护和编辑受保护的ppt:

Presentation presentation = ppApp.Presentations.Open($"{presentationFile}::{password1}::", MsoTriState.msoFalse, MsoTriState.msoFalse, WithWindow: MsoTriState.msoFalse);

想分享你目前的方法吗?特别是,如果您已经成功地使用了其他办公产品,您应该能够调整解决方案,无论是allone还是至少与社区一起。但是,您必须提供一些自己的方法和解决方案。对我来说非常有用!:)@Alex,你好,你能分享一下如何在C中验证这个吗?对于提供的解决方案,我想做同样的事情,我在open中看不到密码参数method@Viral虽然最初的问题是关于C#,但这里发布的解决方案和我尝试的解决方案是针对VBA的。C#和VSTO是一个不同的故事——因此,您需要在其他地方寻找解决方案。
Presentation presentation = ppApp.Presentations.Open($"{presentationFile}::{password1}::", MsoTriState.msoFalse, MsoTriState.msoFalse, WithWindow: MsoTriState.msoFalse);