С появлением в составе Microsoft Office языка макрокоманд, позволяющего, помимо операций с данными пользователя, еще и работать с файловой системой и самими макрокомандами, по миру стали распространятся макровирусы. В связи с этим во всех версиях Office, начиная с Microsoft Office 97, при открытии документа, содержащего макросы, пользователю выдается предупреждение о наличии их в документе. Выбор, предоставляемый окном предупреждения, невелик, — либо "отключить макросы", полностью запретив их использование, либо их включить и подвергнуться риску вирусного заражения. Впрочем, в последнем случае можно избежать автозапускающихся макросов, если удерживать клавишу Shift при нажатии на кнопку "Не отключать макросы" предупреждающего диалога, но вирусные компоненты могут и подменять команды Office, так что использование Shift'а полной защиты не дает.
Однако при постоянной работе с файлами, содержащими программы на Visual Basic for Applications, постоянно появляющееся диалоговое окно с предупреждением изрядно надоедает. Возникает желание, чтобы документы, созданные каким-то одним человеком (или группой лиц), открывались без запроса о запуске в них макросов, а при открытии всех остальных диалоговое окно по-прежнему отображалось. И как раз вот для таких случаев и был создан механизм цифровой подписи.
Цифровая подпись — это небольшой набор данных (около килобайта), который можно прикрепить к проекту на Visual Basic for Applications для того, чтобы пользователи этого проекта могли запускать макросы из него без появления утомительного диалога о необходимости запуска макросов при открытии файла с проектом. Иными словами, цифровая подпись является механизмом снятия защиты от вирусов в макросах только при работе с тем документом, который эту подпись имеет.
При первом открытии файла с определенной цифровой подписью приложение из состава Microsoft Office сообщает пользователю о наличии этой подписи в файле и предоставляет ему возможность указать открывать впредь файлы с такой подписью без каких-либо запросов о макросах. Если пользователь эту возможность выберет, то приложение запомнит находящуюся в файле цифровую подпись и впредь не будет задавать вопрос о необходимости включения макросов при открытии любых файлов с точно такой же подписью.
Возможность добавлять цифровую подпись (и, соответственно, использовать ее для запрета появления диалога о запуске макросов при работе с каким-либо файлом с программами на Visual Basic for Applications) появилась в Microsoft Office начиная с 2000-й его версии.
После того, как вы завершили работу над своей программой на Visual Basic for Applications и оформили ее в виде отдельного проекта (для Word — шаблона или документа, для Excel — книги и т. д.), вы можете добавить к нему цифровую подпись. Чтобы это сделать, необходимо в каталоге, куда установлен Office, запустить файл Selfsert.exe (рис. 7.15).
Рис. 7.15.
(Этот файл копируется на компьютер только в том случае, если при установке Microsoft Office был выбран также и пункт "Цифровая подпись для проектов VBA". Если этого сделано не было, то для использования программы Selfsert, возможно, потребуется снова запустить программу установки Microsoft Office в режиме добавления и удаления компонентов пакета.)
Программа пригласит ввести имя (рис. 7.16). Именно это имя потом будет отображаться при установке проекта с цифровой подписью на компьютер другого пользователя.
Рис. 7.16.
По окончании работы программы появится сообщение об успешном создании сертификата — файла, содержащего цифровую подпись. Физически этот файл помещается в папку Certificates, которая является одним из подкаталогов папки с настройками пользователя и называется длинной последовательностью символов (рис. 7.17).
Рис. 7.17.
Сразу с момента создания новый сертификат с цифровой подписью можно использовать. Например, чтобы подписать им новый проект на Visual Basic for Applications, необходимо выделить какой-либо компонент подписываемого проекта (например, его название), а затем выбрать из пункта меню "Tools" Редактора VBA пункт "Digital Signature" (рис. 7.18) и в появившемся диалоговом окне "Цифровая подпись" для выбора сертификата следует нажать одноименную кнопку.
Рис. 7.18.
В открывшемся диалоговом окне (рис. 7.19) можно выбрать прикрепляемый сертификат. Вы можете создать множество сертификатов с разными именами, и тогда в данном окне выбор будет больше, чем на рисунке.
Рис. 7.19.
Выбор сертификата для прикрепления.О том, какой сертификат прикреплен к тому или иному файлу (и прикреплен ли вообще), вы можете узнать в диалоговом окне "Цифровая подпись", вызываемом пунктом меню "Tools — Digital Signature", — том же самом, что используется для прикрепления сертификата (рис. 7.18).