Тестирование Word 2000 на предмет защиты программного кода документов

© 1999, Андрей Колесов

Тестирование проведено в ноябре 1999 года. 29 ноября все представленные здесь материалы переданы в московский центр технической поддержки Microsoft (сегодня, 8 декабря, ответ по существу вопроса не получен). По проведенному тестированию опубликована небольшая заметка в PC Week/RE № 47/99.
Вы сталкивались с подобными проблемами в MS Office 2000? Поделитесь с нами своей информацией на этот счет.

Выявлены проблемы:
Исходные данные для тестирования
Тест 1. Замена цифровой подписи
Тест 2. Проблемы с загрузкой шаблонов (Test1.doc и Test3.dot)
Тест 3. Проблема с каталогом StartUp


Выявлены проблемы:

  1. В некоторых случаях пользователь может сохранить документ с кодом, только отменив электронную подпись. При сохранении же с электронной подписью выдается неверная диагностика о нехватке места на диске.
  2. Глобальные шаблоны загружаются без проверки на наличие кода.
  3. Шаблоны из каталога, определенного как User Templates, загружаются без проверки на наличие кода.
  4. Происходит какая-то ерунда, в результате чего код загруженных проектов почему-то становится недоступным.

Еще один любопытный вопрос:

Утилита SelfCert.exe позволяет создавать личные сертификаты (электронную подпись для VBA-проектов). Но как можно удалить ненужные сертификаты? Оказывается, для этого нужно использовать IE 5.0:

В начало статьи

Исходные данные для тестирования

Тестирование (результаты которого оказались идентичными) проведено на двух ПК:

  1. Windows 98 Engl. (Regional= Russia, cp1251) + Word 2000 Engl
  2. Windows 98 Rus. (Regional= Russia, cp1251) + Word 2000 Rus

Исходные данные:

Для проверки проведенного нами тестирования загрузите наши исходные файлы: Word2000.ZIP, 47 Кб.

Поместите все файлы в отдельный пользовательский каталог, например, в SomeFolder (никак не описанный в Options|File Locations). Кроме того, поместите Test3.dot в каталог, описанный в User Templates (Options|File Locations), и переименуйте его в Test4.dot.

Начинаем работать в среде Word 2000. Установите уровень защиты от макровирусов Средний (Medium) — Tools|Macro|Security.

В начало статьи

Тест 1. Замена цифровой подписи

1.1. Откройте Summa2kn.doc, перейдите в VBA, установите для проекта свою цифровую подпись. Закройте документ — появляется сообщение о нехватке места на диске!!!

1.2. Откройте Summa2ks.doc, перейдите в VBA, измените подпись на свою. Закройте документ — появляется сообщение о нехватке места на диске!!!

1.3. Откройте Summa2ks.doc, перейдите в VBA, внесите в код любое исправление (какой-нибудь пробел в строке комментария). Закройте документ — появляется сообщение о нехватке места на диске!!!

Уберите цифровую подпись, закройте документ — операция выполняется безошибочно.

Когда возникает эта ситуация? Оказывается, в случае, когда в коде документа Summa2kX имеется ссылка на OLE-объект, с которым не установлена связь (Tools|Reference):

Dim oPropis As Propis

Представляется, что такое поведение программы является ошибочным:

В начало статьи

Тест 2. Проблемы с загрузкой шаблонов (Test1.doc и Test3.dot)

Все шаблоны и документы (если не оговорено иное) открываются с разрешением доступа к макрокомандам.

Открыли Word2000

2.1. Откройте Test3.dot из каталога SomeFolder (команда File|Open). Появится предупреждение о наличии макрокода. Отмените операцию.

Откройте Test4.dot из каталога User Templates. Шаблон загрузится без предупреждения о наличии макрокода!!!

Закройте все документы.

2.2. Откройте новый документ (Doc1.doc). Установите Test3.dot как глобальный шаблон (Tools|Templates and Add-Ins) — он будет подключаться без предупреждения о макрокоде (при использовании шаблона из любого подкаталога). Все макрокоманды — доступны для выполнения.

Уберите все глобальные шаблоны.

2.3. Подключите Test3.dot (из каталога SomeFolder) в качестве шаблона, присоединенного к документу Doc1.doc. Появится сообщение о наличии макрокода. Отмените операции подключения (кнопка Close в диалоговом окне) — но шаблон все равно подключится, хотя макрокоманды будут недоступны.

2.4. Подключите Test4.dot (из каталога User Templates) в качестве шаблона, присоединенного к документу Doc1.doc. Шаблон подключится без сообщения о макрокомандах (они будут доступны). Сообщение не будет выдаваться и при последующих загрузках Doc1.dot.

Вывод: глобальные шаблоны (из любого подкаталога) и любые шаблоны из каталога User Templates, загружаются без проверки на наличие макрокода.

Приводим Word в исходное состояние. Закрываем все документы.

2.5. Открываем Test1.doc. Открываем Test3.dot (просто командой "Открыть"). Переходим в среду VBA. Оба проекта видны в окне Project Explorer, их код доступен, так же как и их макрокоманды.

ВНИМАНИЕ. Переходим в среду Word и закрываем шаблон Test2.dot. Переходим в среду VBA — проект Test1.doc стал недоступным для просмотра и редактирования!!! А его макрокоманды — доступны.

Закрываем все документы Word (Test1.doc).

2.6. Открываем Test1.doc. Переходим в среду VBA. Код и макрокоманды проекта доступны. Возвращаемся в среду Word и сохраняем документ как шаблон (Save As, Dot) в каталог SomeFolder с именем Test1.dot. Закрываем Test1.dot и открываем его заново. Переходим в среду VBA — код Test1.dot становится недоступным!!! Но его макрокоманды доступны. Закрываем Test1.dot.

2.7. Повторяем пункт 2.6 с файлом Test2.doc. Создаем Test2.dot. Тот же результат — код проекта недоступен для просмотра!!

На этом пора остановиться, так как подобные действия с шаблонами уже напоминают какой-то дурдом. Ведь дело в том, что именно на основе копии файла Test2.doc был создан шаблон Test3.dot, с которым мы работали ранее. Но его код проекта все время доступен!!!

В начало статьи

Тест 3. Проблема с каталогом StartUp

Каталог StartUp (Tools|Options|File Locations) используется, в частности, для хранения шаблонов, загружаемых при запуске Word. Но...

У меня:

StartUp = c:\Windows\Application Data\Microsoft\Word\StartUp\

а при запуске Word почему-то помимо этих шаблонов загружаются еще и шаблоны из:

f:\off2000\office\StartUp\

Как же это так????

В начало статьи