如何以编程方式告诉您是否从VB.Net/C#签名了一个Word宏
我有一个编程的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 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#