У меня есть приложение 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, отображает диалоговое окно «Макросы», любые неподписанные (или подписанные, но ненадежные) макросы не отображаются. Это все, как я и ожидал.
Однако мой код VB.Net, открывающий приложение Word, может обойти это. Когда я запускаю этот код, он запускает неподписанный макрос:
With mobjWordApp.Dialogs.Item(Word.WdWordDialog.wdDialogToolsMacro)
.Name = MacroName
.Run = True
.Execute()
End With
Что мне нужно знать, это:
Можно ли в моем коде определить, подписан ли макрос (и является ли он доверенным) до его запуска?