我有一个以编程方式的VB.Net/C#应用程序:
代码:
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宏。
这在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
我需要知道的是:
在运行宏之前,我的代码是否有办法识别宏是否已签名(并受信任)?
答案 0 :(得分:4)
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