Начиная с версии Office 2003 появилась такая новизна: при попытке запустить приложение Office, содержащее макросы, появляется сообщение, предлагающее заблокировать «небезопасные выражения». Речь идет о возможных вирусах, содержащихся в макросах и модулях приложения.
Microsoft предлагает такой вариант решения проблемы (из Help):
- выполняйте на компьютере современные антивирусные программы
- установите высокий уровень безопасности для макросов
- снимите флажок Доверять всем установленным надстройкам и шаблонам
- используйте цифровые подписи; поддерживайте список доверенных издателей. Чтобы изменить список надежных издателей макросов, на компьютере должен быть установлен веб-обозреватель Microsoft Internet Explorer 5.01 с пакетом обновлений SP2 или более поздней версии.
В Office 2003 и выше применяются три уровня безопасности:
Высокий уровень
Подписанный макрос - его обработка определяется его источником и состоянием подписи.
Не подписанный макрос - макросы автоматически отключаются. Файл не открывается.
Средний уровень
Подписанный макрос - его обработка определяется его источником и состоянием подписи.
Не подписанный макрос - пользователю предлагается открыть базу данных или отменить действие. Если пользователь решит отменить действие, файл базы данных не открывается.
Низкий уровень
При низком уровне безопасности все макросы обрабатываются одинаково, вне зависимости от их происхождения или статуса сертификата. При таком уровне безопасности пользователю не предлагается оценивать надежность автора или сертификата макроса. Макросы включаются автоматически. Этот параметр следует использовать только если все макросы в файлах получены из надежных источников.
Это было мнение Helpa. Но вот что приходит в голову, после некоторого размышления на эту тему:
- Чтобы заработала вся эта система сертификаций, необходимо установить Microsoft Jet 4.0 Service Pack 8 или более поздней версии. В этом случае будут исполняться только макросы, имеющие специальную цифровую подпись от «надежных производителей». Многие разработчики (и не только начинающие), вряд ли когда - ни будь вздумают «подписывать» свои модули цифровыми подписями. Во первых, хакерам это вряд ли сильно помешает подделать подпись, а во вторых, услуга эта платная, и цифровой сертификат можно получить лишь в коммерческом центре сертификации, таком как VeriSign Inc., или у администратора внутренней безопасности или специалиста отдела информационных технологий (IT)
- Если Вы создали приложение для себя, а в себе Вы уверены, что не будете создавать вирусы, то можете поставить уровень безопасности «Низкая» и спокойно работать.
- Так же, если Вы создали дистрибутив программы, то при попытке запустить его у пользователя, который не сменил заранее уровень безопасности, появится сообщение о невозможности нормальной работы с программой. Как вариант - предложить пользователю инструкцию, объясняющую куда зайти и что переключить. Но такое решение некоторым Вашим заказчикам покажется чересчур сложным. Не все хотят вникать в такие тонкости, большинству нужно лишь, чтобы программа «нормально работала».
Вывод напрашивается сам собой - программно переключить блокировку макросов и не морочить голову себе и Вашим клиентам. Но тут сразу возникает проблема: чтобы отключить блокировку, нужно запустить соответствующую процедуру, а запустить ее мы можем лишь после старта приложения, которое заблокировано. Тут на помощь придет VBS.
VBS - это Microsoft Windows Script Technologies. Своеобразная альтернатива досовских .bat файлов. Сценарии написанные на VBScript и сохраненные как файлы с расширением .vbs выполняются с помощью инструмента Windows Script Host (WSH), который встроен в ядро Windows уже с 98 версии.
Говоря проще - это обычный текстовый файл, и создается он в простом блокноте, или в его более продвинутом варианте - Bred, или кому что больше нравится. После создания файла, вручную меняем расширение на .vbs и все - получаем исполняемый файл. Щелкнем дважды по нему - компилятор Windows обработает текст и выдаст результат. Совсем как в .exe файлах. К тому же, синтаксис VBS очень похож на VB, в чем Вы сможете убедиться чуть позже, и соответственно, не составит большого труда разобраться в коде.
Итак, рассмотрим задачи, которые надо решить:
- Определить версию Access - ведь при установке Office 2003 путь к нужному параметру реестра (который надо изменить) будет HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\security\Level, а при установке Office 2007 - HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\VBAWarnings
- Понизить уровень безопасности
- Определить путь к MSACCESS.EXE - он собственно запускает сам Access
- Запустить приложение
Возьмите базу, содержащую макросы или модули и переименуйте ее в db1.mdb (или в скрипте измените имя базы на Вашу). Создайте папку например С:/Prog и поместите в нее скрипт и базу. Откройте Access и через Сервис - Макрос - Безопасность установите уровень защиты «Высокий». Попробуйте запустить приложение - появится сообщение о блокировке. Теперь запустите скрипт двойным щелчком - приложение откроется. Посмотрите, какой теперь стал уровень защиты - низкий. |