【问题标题】:Open Both Edit and Open Passwords Protected PowerPoint Presentation打开编辑和打开受密码保护的 PowerPoint 演示文稿
【发布时间】:2020-02-07 18:44:14
【问题描述】:

我正在尝试找到一种以编程方式打开既受打开保护又受编辑保护的演示文稿的方法。
我确实知道如何分别实现一个或后者,但不必处理要求编辑密码的弹出窗口。

打开受保护的文件:
Presentation presentation = ppApp.Presentations.Open($"{presentationFile}::{password}::", MsoTriState.msoFalse, MsoTriState.msoFalse, WithWindow: MsoTriState.msoFalse);

要打开受编辑保护的文件:
var presentation = ppApp.ProtectedViewWindows.Open($"{presentationFile}", editPassword, MsoTriState.msoFalse);

实际问题:如何打开受打开和编辑(已知)密码保护的演示文稿,删除它们并保存演示文稿?”

欢迎任何建议,谢谢!

【问题讨论】:

  • 只是猜测,但我会尝试将::{password}:: 添加到第二个选项
  • 谢谢@Rafalon,虽然没有运气,但已经尝试过了,它说它找不到文件。 ProtectedViewWindows 似乎无法识别打开时的其他参数。

标签: c# passwords powerpoint office-interop


【解决方案1】:

这两种方法完全不同。

在受保护的视图窗口中显示的文件无法编辑,并且被限制运行活动内容,例如 Visual Basic for Applications 宏和数据连接。有关受保护的视图窗口的更多信息,请参阅What is Protected View?

ProtectedViewWindows.Open 方法允许指定读取密码。它打开并从ProtectedViewWindows 集合中返回一个ProtectedViewWindow 对象。 ProtectedViewWindow.Edit 方法更改ProtectedViewWindow 对象的密码。

由于受保护的视图窗口旨在保护用户免受潜在恶意代码的侵害,因此您可以使用ProtectedViewWindow 对象返回的Presentation 对象执行的操作将受到限制。不允许的操作将返回错误。

如果我们谈论受密码保护的文件,假设您知道密码,您可以使用以下内容打开文件:

Presentations.Open("c:\temp\protected_presentation.pptx::password::")

并在演示文稿上设置密码,例如:

ActivePresentation.Password = "Hide_me"

例如,原始草图:

Sub TestTest()

    Dim oPPTApp As Object
    Dim oPPTPres As Object

    Set oPPTApp = CreateObject("PowerPoint.Application")

    If Not oPPTApp Is Nothing Then
        Set oPPTPres = oPPTApp.presentations.Open("C:\temp\test.pptx::opensesame::")
        MsgBox oPPTPres.slides(1).Shapes(1).TextFrame.TextRange.Text
        oPPTPres.Close
        oPPTApp.Quit
    End If
End Sub

【讨论】:

  • 嗨@Eugene,感谢您的回答和链接。您可能知道帖子问题的答案吗?改写:“如何打开受两个(已知)密码保护的演示文稿,删除它们并保存演示文稿?”
  • 在没有用户交互的情况下无法取消保护(在保护模式下打开)文件。
猜你喜欢
  • 2019-11-25
  • 2017-08-28
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 2017-12-29
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多