Программная настройка параметров центра управления безопасностью MS-Word с использованием C # - PullRequest
8 голосов
/ 21 октября 2009

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

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

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

Итак, мой вопрос «, как мне настроить параметры центра управления безопасностью с помощью автоматизации COM * ».

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

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

В Word 2007 Trust Center доступны следующие настройки:

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

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

alt text
(источник: visguy.com )


Элементы управления 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

Все еще стремится решить проблему с настройками макроса

Ответы [ 4 ]

7 голосов
/ 21 октября 2009

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

Я проверил это и могу подтвердить следующее:

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

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

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

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

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

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

Я оставил комментарий в соответствующем разделе сайта MSDN

3 голосов
/ 04 февраля 2014

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

Это относится к Word версии 2010 (и, вероятно, 2007, но с 12.0 вместо 14.0)

enter image description here

или в тексте:

Местоположение реестра:

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

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

Имя : VBAWarnings

Данные :

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

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

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

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

Настройки макроса разработчика:

Имя : AccessVBOM

Данные :

Не проверено - 0

Проверено - 1

0 голосов
/ 03 апреля 2014

Я потратил пару дней, пытаясь сделать то же самое, и, наконец, обнаружил очень простой способ открытия файла .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 была представлена ​​эта опция.

0 голосов
/ 23 февраля 2014

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

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

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