如何以编程方式告诉您是否从VB.Net/C#签名了一个Word宏

我有一个编程的VB.Net/C#应用程序:

  • 创建一个RTF文档
  • 在Microsoft Word中打开它
  • 使用如下代码运行Word模板中存在的Word宏:
  • 码:

    Protected mobjWordApp As Word.Application = Nothing
    '
    ' lots more code snipped for clarity
    '
    With mobjWordApp.Dialogs.Item(Word.WdWordDialog.wdDialogToolsMacro)
        .Name = MacroName
        .Run = True
        .Execute()
    End With
    

    多年来这一直很开心。

    我现在有一个新的要求; 我的应用程序只需要运行SIGNED Word Macros。

    这在Word用户界面中很容易实现,如下所示:

    File > Options > Trust center > Macro Settings
    Select "Disable all macros except digitally signed macros"
    

    信任中心

    一旦设置完成,如果运行Word的人显示“宏”对话框,则不会列出任何未签名(或已签名但未受信任的)宏。 这完全如我所料。

    但是,我打开Word应用程序的VB.Net代码可以绕过这一点。 当我运行这段代码时,它将运行一个未签名的宏:

    With mobjWordApp.Dialogs.Item(Word.WdWordDialog.wdDialogToolsMacro)
        .Name = MacroName
        .Run = True
        .Execute()
    End With
    

    我需要知道的是:

    在我运行它之前,我的代码是否有办法确定宏是否已签名(并受信任)?


    Dim ap As New Application()
    Dim doc As Document = ap.Documents.Open("C:Doc1.rtf", [ReadOnly] := False, Visible :=        False)
    doc.Activate()
    'returns a boolean on if the VBA is signed 
    doc.VBASigned
    

    MSDN链接

    链接地址: http://www.djcxy.com/p/58101.html

    上一篇: How can you tell programmatically if a Word Macro is signed from VB.Net/C#

    下一篇: Using apache tomcat with wamp server