2009-10-21 2 views
8

Я разработал простое приложение C# Winforms, которое загружает документы MS-Word 2007 через автоматизацию COM.Программная настройка параметров центра доверия MS-Word с использованием C#

Все это очень просто и прямолинейно, однако в зависимости от документа, который мне требуется для программирования, можно включить или отключить макросы, а также элементы управления ActiveX.

Возможно, есть способ сохранить это в реестре, но я хочу контролировать эти параметры в экземпляре по принципу экземпляра, поскольку одновременно может выполняться несколько одновременных запросов.

Так что мой вопрос: «Как настроить параметры центра доверия с помощью автоматизации COM».

Я Googled в течение нескольких часов, но все, что я смог найти это свойство Application.AutomationSecurity, но это только принимает следующие значения:

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

Центр доверия Word 2007 однако предоставляет следующие настройки:

Макро Настройки:

  • Отключить все макросы без уведомления (соответствует msoAutomationSecurityForceDisable)
  • Отключить все макросы с уведомлениями (мне не нужен этот)
  • Отключить все макросы, кроме цифровой форме не подписанные макросы (нет эквивалента)
  • Включить все макросы (соответствует msoAutomationSecurityLow)

alt text http://www.visguy.com/wp-content/uploads/2007/05/v2007-security-settings.png


управления ActiveX (настраивается отдельно, я не нашел способ управления этим, обратите внимание, что в соответствии с скриншоте эти параметры разделены между всеми приложениями)

  • Отключить все элементы управления без уведомление
  • Подскажите мне, прежде чем включать элементы управления UFI ....
  • Подсказка, прежде чем включать все элементы управления с минимальными ошибками
  • Включить все элементы управления без ограничений

alt text

Я попробовал старый трюк записи макроса MS-Word, при изменении этих параметров, но ни один из этих шагов не записываются.

Обновление: Я нашел следующие записи для элементов управления ActiveX в реестре.Похоже, что настройки ActiveX действительно глобальны и не могут быть указаны для одного экземпляра MS-Word, если кто-то не докажет мне, что я ошибаюсь.

ActiveX Отключено

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

ActiveX Включается безопасном режиме

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

ActiveX Включено без безопасного режима

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

Тем не менее стремится разрешить макрос проблема настроек

ответ

7

Похоже, я собираюсь ответить на свой вопрос.

Я испытал это и может подтвердить отображения следующим образом:

Параметры макросов:

  • msoAutomationSecurityForceDisable = Отключить все макросы без уведомления

  • msoAutomationSecurityByUI = Отключить все макросы, кроме цифровых подписанные макросы

  • msoAutomationSecurityLow = Включить все макросы

в меру моих знаний глобальные настройки ActiveX могут быть настроены только путем непосредственного редактирования реестра

ActiveX Отключено

[HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword: 00000001 "UFIControls" = dword: 00000002

ActiveX Включается безопасный режим

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

ActiveX Включено без безопасного режима

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

Я оставил комментарий в relevant section of the MSDN website

2

Я знаю, что эта нить довольно старая, но я должен был понять это сегодня, так что после быстрого исследования я нашел этот реестр для Trust Настройки Center:

Это относится к Word, версии 2010 (и вероятно, 2007, но с 12,0 вместо 14,0)

enter image description here

Или в тексте:

реестра нахо ион:

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

Параметры макросов:

Имя: VBAWarnings

данных:

Отключить все макросы без уведомления -

Отключить все макросы с уведомлением -

Отключить все макросы кроме макросов с цифровой подписью -

Включить все макросы (...) -

Developer Macro Настройки:

Имя: AccessVBOM

данных:

Неконтролируемых -

Проверено -

0

Для настройки для элементов управления ActiveX в офисе 2010

в DisbaleActiveX без безопасного режима вам нужно только .. .

"HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security" /v UFIControls /t REG_DWORD /D 1 /F 
0

Я потратил пару дней на то, чтобы попытаться сделать то же самое, и, наконец, обнаружил очень простой способ открыть файл .xls, содержащий макросы, без использования настроек доверия в реестре или Excel. В C#:

Application aXL = new Application(); 
aXL.FileValidation = 
    Microsoft.Office.Core.MsoFileValidationMode.msoFileValidationSkip; 
try { 
    Workbook aBook = aXL.Workbooks.Open("K:\\Work\\ExcelTest\\BrokenMacro.xls" 
        , 0 
        , true 
        , Type.Missing 
        , Type.Missing 
        , Type.Missing 
        , true 
        , Type.Missing 
        , Type.Missing 
        , false 
        , false 
        , Type.Missing 
        , false 
        , false 
        , Type.Missing 
        /*,false*/); 
      } 
      catch (Exception e) { 
       Console.WriteLine(e); 
      } 

Для получения более подробной информации см. MSDN.

Настройки центра доверия в Excel были настроены на значения по умолчанию - «Отключить все макросы с предупреждениями» и «Не доверять доступу к объектной модели VBA. Без опции msoFileValidationSkip было выбрано исключение. С помощью опции msoFileValidationSkip файл открыт в порядке.

мне кажется, что это путь, так как это позволяет программе открывать файлы с макросами, но не открывает вирус приложения Excel таблицы ездил.

Обратите внимание, что Я работаю в Office 2010. Я не знаю, в какой версии Office был введен этот вариант.

Смежные вопросы