Access 2002

Положительные результаты          


В Access 2002 предусмотрен еще один вариант работы с методом OpenCurrentDatabase, позволяющий передать ему пароль базы данных. Однако это дает положительные результаты только при работе с примитивным механизмом защиты, предоставляемым командой Tools  Security  Set Database Password. Такой вариант не подходит для обеспечения полноценного защищенного режима.

Мы предлагаем воспользоваться менее рискованным способом решения этой проблемы: запустить Access с параметрами командной строки. Для указания имени пользователя, пароля и рабочей группы в Access служат параметры /user, /pwd и /wrkgrp. Правда, запуск Access с помощью механизма автоматизации не предполагает задания параметров командной строки. Поэтому придется загружать Access отдельно, с помощью функции Shell.

Программный код метода Init, служащий для организации защищенного подключения к Access, анализирует значения свойств объекта AccessAutomation и формирует на их основе командную строку. Вот как это происходит:

В командную строку помещается еще одна опция — /nostartup. Она подавляет открытие начального диалогового окна Access, поскольку это также заставит приложение ждать. Подготовив командную строку, метод Init вызывает функцию Shell, а затем функцию Windows API Sleep. Вызов функции Sleep позволяет сделать небольшую паузу (приблизительно полсекунды) перед вызовом функции GetObject. Это время необходимо для запуска Access: только после загрузки программы мы сможем получить ссылку на ее объект.

Теперь (если все прошло как планировалось) у нас есть ссылка на защищенный экземпляр Access. Она хранится в свойстве Access Inst.

Эта технология работает только в том случае, если программа Access еще не запущена (обратите  на вызов IsAccessRunning). Дело в том, что функция GetObject возвращает указатель на первый найденный экземпляр приложения, и это может быть не тот экземпляр, который вы запустили с указанием имени пользователя и пароля.

Комментарии закрыты