如何通过编程判断Word宏是否是从VB.Net/C签名的#
我有一个VB.Net/C#应用程序,它以编程方式:如何通过编程判断Word宏是否是从VB.Net/C签名的#,.net,vb.net,vba,ms-word,.net,Vb.net,Vba,Ms 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) .N
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
多年来,这一做法一直运作良好
我现在有一个新的要求;我的应用程序只需要运行有符号的Word宏
这在Word用户界面中很容易做到,如下所示:
File > Options > Trust center > Macro Settings
Select "Disable all macros except digitally signed macros"
设置后,如果运行Word的人员显示“宏”对话框,则不会列出任何未签名(或已签名但不受信任)的宏。这正是我所期望的
然而,我的VB.Net代码,它是打开Word应用程序可以绕过这一点。当我运行此代码时,它将运行一个未签名的宏:
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
word文档的哪个版本?doc还是docx?G'day Micah,我们正在使用.dotm和.doc文件运行Word 2007(32位)