23. Jak pozbyć się komunikatu o zabezpieczeniach w Accessie 2003?

Każdy kto używa Accessa 2003 wie o co chodzi... O ten uporczywy komunikat przy starcie aplikacji:
Ten plik może nie być bezpieczny, jeżeli zawiera kod przeznaczony do uszkodzenia komputera. Czy chcesz otworzyć ten plik?
Trzeba mieć mocne nerwy, żeby po przeczytaniu takiego ostrzeżenia kliknąć Tak - narażając swój komputer na niewątpliwe zniszczenie. Prędzej należy się spodziewać, że użytkownik wyrwie wtyczkę z gniazdka i ucieknie. Co sobie pomyśli o programiście, który mu ten program przyniósł - lepiej nie myśleć... ;-)

Jak zatem pozbyć się tego komunikatu, żeby nie narażać użytkownika na zbyt gwałtowną akcje serca? Chciałby przedstawić dwa mniej typowe rozwiązania:

  1. Rozprowadzamy naszą aplikacje za pomocą pakietu instalacyjnego. Do robienia takich instalacji służy program Package Wizard (napisany zresztą w Accessie) z pakietu Microsoft Office Access 2003 Developer Extensions. Podczas przygotowywania instalacji jest możliwość określenia wpisów, które będą dokonane w rejestrze na komputerze użytkownika. Należy podać następujące wartości: Na ekranie widoczne to będzie w następującej postaci:

    Tak przygotowana instalacja oprócz tego, że umieści nasz program w menu Start, zarejestruje potrzebne komponenty, to dodatkowo ustawi niski poziom zabezpieczeń, przy którym Access nie wyświetla komunikatu o zabezpieczeniach. I o to nam chodziło :-) Uwaga: Dotyczy to wszystkich baz accessowych otwieranych na tym komputerze.
     
  2. Drugi jest bardzo pomysłowy. Wywołujemy naszą aplikację za pomocą następującego skryptu VBS (czyli treść poniższej procedury należy zapisać do pliku tekstowego i nadać mu rozszerzenie VBS):
    '(c) TC
    dim o 
    set o=createobject ("Access.Application") 
    o.automationsecurity=1  ' set macro security LOW. 
    o.opencurrentdatabase "C:\Program Files\Baza1\db1.mdb" 
    o.usercontrol=true 
    set o=nothing 
    Niezwykle interesujące jest to, że niniejszy skrypt ustawia niski poziom zabezpieczeń wyłącznie dla bieżącej sesji Accessa(!). Należy też zwrócić uwagę na użycie właściwości usercontrol, która zgodnie z accessowym helpem jest tylko do odczytu.
    Uwaga: Pamiętajmy, że CreateObject nie działa w środowisku runtime, to niestety istotnie zawęża przydatność tego rozwiązania.

    (Skrypty VBS okazują się przydatne także do innych zastosowań. Sposób wykorzystania podobnego skryptu do automatycznego wczytania nowej wersji programu, został zawarty w przykładzie na stronie war323.htm. W tym przypadku skrypt VBS działa zarówno w runtime, jak i w pełnym Accessie.)

    K.P.