· Общий список статей

Проблемы с созданием проектов в Office 2000

Андрей Колесов

© 1999, Андрей Колесов
Авторский вариант. Статья опубликована c некоторыми сокращениями и незначительной литературной правкой в PC Week/RE № 47/99, с. 20 см. PC Week/RE Online.

Реализация внутреннего механизма программирования документов Office 97 наряду с появлением возможностей их настройки на задачи конкретных пользователей имела и весьма неприятное последствие. Ранее безобидные статические документы теперь могли содержать новый компонент — внутренний программный код. А это значить, что файлы Office превратились в потенциальных (и фактических) переносчиков программных вирусов.

Проблема здесь усугубляется тем, что традиционные антивирусные средства часто оказываются неспособными выявлять "вредоносный" код на макроязыке. Механизм же защиты самого Office сводился к тривиальному предупреждению о наличии программного кода в загружаемом документе. Этого было явно недостаточно для нормальной работы пользователя, которому нужно было автоматически определять "свои" документы, содержавшие программы, от файлов неизвестного происхождения. Решение этой проблемы в Office 2000 было предложено в виде реализации механизма цифровой подписи для сертификации программного кода документов.

Однако, как мы уже отмечали ( см. PC Week/RE N 44/99, с. 26), реализация этого механизма пока далека от совершенства и требует доработки. Проведенное дополнительное тестирование выявило ряд серьезных проблем (детальное описание методики тестирования находится в разделе "Тестовая лаборатория Visual2000).

С помощью автономной утилиты SelfCert.exe из состава Office 2000 разработчик может создавать собственную электронную подпись. Но как можно удалить ненужные подписи? На этот вопрос справка Office не дает ответа. Оказывается, что для удаления необходимо использовать совсем другую программу — Internet Explorer 5.0 (команда "Сервис|Свойства обозревателя", далее выбрать вкладку "Содержание", нажать кнопку "Сертификатов...", открыть вкладку "Личные" в окне "Диспетчер сертификатов" и там уже проводить операции с сертификатами).

Обнаружена также проблема с установкой цифровой подписи в VBA-проекте. В ряде случаев (например, когда в программе используется внешний ActiveX-объект, но связь с ним не установлена командой Tools|Reference) проект можно сохранить только при удаленной подписи. При попытке записи с электронной подписью (чужой или своей) операция не выполняется и при этом выдается неверная диагностика о нехватке места на диске.

Выяснилось также, что в целом ряде случаев Word 2000 вообще не производит проверку загружаемых шаблонов на наличие макрокода. Это в частности происходит при использовании глобальных шаблонов, а также при загрузке шаблонов в виде автономных документов или присоединенного файла из специального каталога "Шаблоны пользователя".

Еще более странно выглядит ситуация, когда по совершенно непонятным причинам программный код шаблонов и документов Word становится просто недоступным в среде VBA. То есть, создав шаблон, разработчик лишается возможности коррекции его кода в дальнейшем. (Это происходит далеко не для всех шаблонов, но есть точная демонстрация примера с подтверждением подобной ситуации с неожиданной блокировкой кода.)

Впрочем, ситуация, возможно, каким-либо образом изменится с выходом пакета обновлений для MS Office 2000. Будем ждать.

Вы сталкивались с подобными проблемами в MS Office 2000? Поделитесь с нами своей информацией на этот счет. С автором данной статьи можно связаться по адресу: akolesov@glasnet.ru.

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