【发布时间】:2012-03-08 03:17:57
【问题描述】:
我有一个 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 宏。
这在 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
我需要知道的是:
有没有办法让我的代码在我运行宏之前识别它是否已签名(并且受信任)?
【问题讨论】:
-
什么版本的word文档? doc还是docx?
-
G'day Micah,我们正在运行带有 .dotm 和 .doc 文件的 Word 2007(32 位)