Ich habe eine einfache C # Winforms-Anwendung entwickelt, die MS-Word 2007-Dokumente über COM-Automatisierung lädt.
Das ist alles sehr einfach und direkt, aber abhängig vom Dokument muss ich Makros sowie ActiveX-Steuerelemente programmatisch aktivieren oder deaktivieren.
Es gibt wahrscheinlich eine Möglichkeit, dies in der Registrierung zu speichern, aber ich möchte diese Einstellungen Instanz für Instanz steuern, da mehrere gleichzeitige Anfragen gleichzeitig ausgeführt werden können.
Meine Frage lautet also: Wie konfiguriere ich die Trust-Center-Einstellungen mithilfe der COM-Automatisierung ?
Ich habe stundenlang gegooglet, aber alles, was ich finden konnte, ist die Application.AutomationSecurity-Eigenschaft, aber das akzeptiert nur die folgenden Werte:
Das Word 2007-Vertrauensstellungscenter stellt jedoch die folgenden Einstellungen bereit:
Makroeinstellungen:
alt text http://www.visguy.com/wp -content / uploads / 2007/05 / v2007-security-settings.png
ActiveX-Steuerelemente (separat konfiguriert, habe ich keine Möglichkeit gefunden, diese zu steuern, beachten Sie, dass nach dem Screenshot diese Einstellungen zwischen allen Anwendungen geteilt werden)
Ich habe den alten Trick der Aufnahme eines MS-Word-Makros ausprobiert, während ich diese Einstellungen ändere, aber keiner dieser Schritte wird aufgezeichnet.
Aktualisierung: Ich habe die folgenden Einträge für die Einstellungen der ActiveX-Steuerelemente in der Registrierung gefunden. Sieht aus wie ActiveX-Einstellungen sind tatsächlich global und können nicht für eine einzelne MS-Word-Instanz angegeben werden, es sei denn jemand beweist mich falsch.
ActiveX deaktiviert
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Sicherheit] "DisableAllActiveX" = dword: 00000001 "UFIControls" = dword: 00000002
ActiveX aktiviert mit abgesichertem Modus
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Sicherheit] "DisableAllActiveX" = dword: 00000000 "UFIControls" = dword: 00000002
ActiveX aktiviert ohne abgesicherten Modus
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Sicherheit] "DisableAllActiveX" = dword: 00000000 "UFIControls" = dword: 00000001
Ich bin immer noch daran interessiert, das Problem mit den Makroeinstellungen zu lösen
Sieht so aus, als würde ich meine eigene Frage beantworten.
Ich habe es getestet und kann bestätigen, dass die Zuordnungen wie folgt sind:
Makroeinstellungen:
msoAutomationSecurityForceDisable = Deaktiviere alle Makros ohne Benachrichtigung
msoAutomationSecurityByUI = Alle Makros außer digital deaktivieren signierte Makros
msoAutomationSecurityLow = Aktiviere alle Makros
Soweit ich weiß, können die globalen ActiveX-Einstellungen nur durch direktes Bearbeiten der Registrierung konfiguriert werden.
ActiveX deaktiviert
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Sicherheit] "DisableAllActiveX" = dword: 00000001 "UFIControls" = dword: 00000002
ActiveX aktiviert mit abgesichertem Modus
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Sicherheit] "DisableAllActiveX" = dword: 00000000 "UFIControls" = dword: 00000002
ActiveX aktiviert ohne abgesicherten Modus
[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Sicherheit] "DisableAllActiveX" = dword: 00000000 "UFIControls" = dword: 00000001
Ich habe einen Kommentar im relevanten Bereich der MSDN-Website
hinterlassenIch weiß, dass dieser Thread ziemlich alt ist, aber ich musste es heute herausfinden, also fand ich nach einer kurzen Recherche diese Registry für die Trust Center-Einstellungen :
Dies gilt für Word Version 2010 (und wahrscheinlich 2007, aber mit 12.0 statt 14.0)
Oder im Text:
Registrierungsspeicherort:
HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Word \ Sicherheit
Makroeinstellungen:
Name : VBA-Warnungen
Daten :
Deaktivieren Sie alle Makros ohne Benachrichtigung - 4
Deaktivieren Sie alle Makros mit Benachrichtigung - 2
Deaktivieren Sie alle Makros außer digital signierten Makros - 3
Aktiviere alle Makros (...) - 1
Entwicklermakroeinstellungen:
Name : ZugriffVBOM
Daten :
Deaktiviert - 0
Geprüft - 1
Ich habe ein paar Tage damit verbracht, das Gleiche zu versuchen und habe schließlich eine sehr einfache Möglichkeit gefunden, eine .xls-Datei mit Makros zu öffnen, ohne die Registry-Einstellungen oder die Trust-Einstellungen von Excel zu stören. In C #:
%Vor%Siehe MSDN für Details.
Meine Excel-Trustcenter-Einstellungen wurden alle auf Standardwerte gesetzt - "Alle Makros mit Warnungen deaktivieren" und "Vertrauen Sie nicht dem Zugriff auf das VBA-Objektmodell. Ohne die Option msoFileValidationSkip wurde eine Ausnahme ausgelöst. Mit der Option msoFileValidationSkip die Datei fein geöffnet.
Es scheint mir, dass dies der richtige Weg ist, da es einem Programm erlaubt, Dateien mit Makros zu öffnen, aber die Excel-Anwendung nicht mit den von Viren befallenen Tabellen öffnet.
Beachten Sie, dass ich Office 2010 ausführe. Ich weiß nicht, auf welcher Version von Office diese Option eingeführt wurde.
Tags und Links c# ms-word office-2007 automation ms-office