Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically configuring MS-Word's Trust Center settings using C#

I have developed a simple C# Winforms application that loads MS-Word 2007 documents via COM automation.

This is all very simple and straight forward, however depending on the document I need to programamtically Enable or Disable Macros as well as ActiveX controls.

There is probably a way to store this in the registry, but I want to control these settings on an instance by instance basis as multiple concurrent requests may be running at a time.

So my question is 'how do I configure the trust center settings using COM automation'.

I have Googled for hours, but all I have been able to find is the Application.AutomationSecurity property, but this only accepts the following values:

  • MsoAutomationSecurity.msoAutomationSecurityLow
  • MsoAutomationSecurity.msoAutomationSecurityForceDisable
  • MsoAutomationSecurity.msoAutomationSecurityByUI

The Word 2007 Trust Center however exposes the following settings:

Macro Settings:

  • Disable all macros without notification (matches msoAutomationSecurityForceDisable)
  • Disable all macros with notifications (I don't need this one)
  • Disable all macros except digitally signed macros (No equivalent)
  • Enable all macros (matches msoAutomationSecurityLow)

alt text
(source: visguy.com)


ActiveX controls (configured separately, I have not found any way to control these, note that according to the screenshot these settings are shared between all applications)

  • Disable all controls without notification
  • Prompt me before enabling UFI controls....
  • Prompt me before enabling all controls with minimal erstrictions
  • Enable all controls without restrictions

alt text

I have tried the old trick of recording an MS-Word macro while changing these settings, but none of these steps are recorded.

Update: I have found the following entries for the ActiveX controls settings in the registry. Looks like ActiveX settings are indeed global and cannot be specified for a single MS-Word instance unless someone proves me wrong.

ActiveX Disabled

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000001 "UFIControls"=dword:00000002

ActiveX Enabled with safe mode

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000000 "UFIControls"=dword:00000002

ActiveX Enabled without safe mode

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000000 "UFIControls"=dword:00000001

Still keen to resolve the macro settings problem

like image 625
Jeroen Ritmeijer Avatar asked Oct 21 '09 12:10

Jeroen Ritmeijer


2 Answers

Looks like I am going to answer my own question.

I have tested it and can confirm the mappings are as follows:

Macro Settings:

  • msoAutomationSecurityForceDisable = Disable all macros without notification

  • msoAutomationSecurityByUI = Disable all macros except digitally signed macros

  • msoAutomationSecurityLow = Enable all macros

To the best of my knowledge the global ActiveX settings can only be configured by directly editing the registry

ActiveX Disabled

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000001 "UFIControls"=dword:00000002

ActiveX Enabled with safe mode

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000000 "UFIControls"=dword:00000002

ActiveX Enabled without safe mode

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000000 "UFIControls"=dword:00000001

I have left a comment in the relevant section of the MSDN website

like image 200
Jeroen Ritmeijer Avatar answered Sep 22 '22 14:09

Jeroen Ritmeijer


I know this thread is quite old, but I had to figure it out today so after a quick research I found this registry for the Trust Center Settings:

This applies to Word version 2010 (and probably 2007, but with 12.0 instead of 14.0)

enter image description here

Or in text:

Registry location:

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Security

Macro Settings:

Name: VBAWarnings

Data:

Disable all macros without notification - 4

Disable all macros with notification - 2

Disable all macros except digitally signed macros - 3

Enable all macros (...) - 1

Developer Macro Settings:

Name: AccessVBOM

Data:

Unchecked - 0

Checked - 1

like image 39
etaiso Avatar answered Sep 21 '22 14:09

etaiso