Ho un'applicazione VB.Net/C# che a livello di codice:Come si può dire a livello di codice se una macro di Word è firmato da VB.Net/C#
- crea un documento RTF
- aprirlo in Microsoft parola
- Esegue una macro di Word che esiste nel modello di Word utilizzando il codice in questo modo:
codice:
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
Questo ha funzionato felicemente per anni.
Ora ho un nuovo requisito; La mia applicazione è necessaria per eseguire solo i macro di Word FIRMATI.
Questo è abbastanza facile da fare nell'interfaccia utente di Word, come segue:
File > Options > Trust center > Macro Settings
Select "Disable all macros except digitally signed macros"
Una volta che questo è impostato, se la persona che esegue Word visualizza la finestra di dialogo Macro, qualsiasi unsigned (o le macro firmate ma non attendibili) non sono elencate. Questo è tutto come mi aspetterei.
Tuttavia, il mio codice VB.Net, che sta aprendo l'applicazione di Word, può ignorarlo. Quando ho eseguito questo codice verrà eseguito una macro non firmata:
With mobjWordApp.Dialogs.Item(Word.WdWordDialog.wdDialogToolsMacro)
.Name = MacroName
.Run = True
.Execute()
End With
Che cosa ho bisogno di sapere è:
c'è un modo per il mio codice per identificare se una macro è firmato (e fidato) prima che io eseguirlo?
Quale versione di word doc? doc o docx? –
G'day Micah, stiamo eseguendo Word 2007 (32 bit) con i file .dotm e .doc –