Kategorie szkoleń | Egzaminy | Kontakt
  • 3
  • 3
  • 76

Witam.

Zamierzam oddać użytkownikom moją aplikację do użytku.

Zabezpieczyłem VBA za pomocą hasła (bezpieczne jak bezpieczne, większość nie wie jak to obejść. ;) )

Chciałbym ustawić plik w taki sposób, żeby po otwarciu końcowy użytkownik widział tylko zaprojektowany formularz z guzikiem i nie mógł tak łatwo dojść do tabel i kwerend bezpośrednio.

Wiem, że jest możliwość specjalnego ustawienia bazy w ten sposób, że normalne jej włączenie pokazuje wyłącznie formularz, a jeśli chce się mieć dostęp do tabel i kwerend to trzeba użyć skrótu klawiszowego podczas otwierania.

Czy ktoś z Was wie jak takie coś można zrealizować?

Pozdrawiam.
Michał.

Michał_Gwiazdonik
  • Zapytał
  • @ Michał_Gwiazdonik | 10.05.2016
    • lider
    • laureat
    • 13
    • 9
    • 51

Odpowiedzi (3)

  • 1

Witam.

Proponuję przede wszystkim zapisać bazę w nieedytowalnym formacie ACCDE:

 

 

Pozdrawiam.
Tomasz Grabowski.

  • Odpowiedział
  • @ | 11.05.2016
  • TRENER MODERATOR ALTKOM AKADEMII
Komentarze
Tomaszu, dziękuję za odpowiedź. Czy mógłbyś rozwinąć myśl Jakie są plusy i minusy użycia tego typu pliku? Co jeśli będę chciał zrobić jakieś zmiany w tym pliku, który będzie już działał u danego użytkownika. Na razie oprócz dodania hasła na VBA, odzaczyłem możliwość wyświetlania okienka nawigacji przy starcie programu. Plik --> Opcje --> Bieżąca baza danych --> Nawigacja.
Skomentował : @ Michał_Gwiazdonik ,11.05.2016
  • 13
  • 9
  • 51
  • 1

Witam.

Plik Accde nie pozwala na edycję bazy danych (np. Formularzy i raportów) i jest plikiem przeznaczonym dla użytkownika końcowego, bez możliwości ingerowania w istniejące elementy. Dodatkowym plusem tego typu pliku jest to, że działa szybciej niż zwykłe accdb bo jest już skompilowany i tym samym zoptymalizowany.

 

Oprócz wyłączenia okna nawigacji proponuje jeszcze wyłączyć tą opcję:

 

 

Pozdrawiam.
Tomasz Grabowski.

 

  • Odpowiedział
  • @ | 12.05.2016
  • TRENER MODERATOR ALTKOM AKADEMII
Komentarze
Dziękuję Tomku.
Skomentował : @ Michał_Gwiazdonik ,14.05.2016
  • 13
  • 9
  • 51
  • 6

Witam.

Ja standardowo zabezpieczam bazę accdb w stosując następujące rozwiązania:

1) Standardowo zabezpieczam kod VBA przy pomocy hasła.

2) Jeśli baza jest przetestowana, zoptymalizowana i nie przewiduję częstego jej otwierania w celu zmian na poziomie struktury, tabel to wtedy wykonuję kompilację bazy tak jak to opisał powyżej Pan Tomek, wówczas cały kod VBA zostaje skompilowany do kodu maszynowego i nie ma już możliwości w takim pliku accde w jakikolwiek sposób podejrzeć projekt VBA. W tym miejscu należy tylko zaznaczyć żeby nie zapomnieć sobie zachować kopii bazy w postaci nieskompilowanej (accdb) bo inaczej sami stracimy cały swój projekt.

3) Mimo, iż baza zostanie skompilowana, użytkownik końcowy w dalszym ciągu może podejrzeć/zmienić obiekty bazy takie jak tabele/kwerendy. Aby to wyłączyć wykonuję  następujące czynności:

W opcjach bieżącej bazy wyłączam:

  • okienko nawigacyjne  -> aby ukryć listę obiektów,
  • pełne menu  -> tak aby użytkownik nie tworzył/edytował nowych obiektów w bazie oraz brak dostępu do narzędzi bazy/danych zewnętrznych,
  • menu skrótów (kontekstowe) -> jeśli baza jest nieskompilowana i mimo iż okienko nawigacyjne zostanie wyłączone to po kliknięciu prawym przyciskiem myszki na formularzu/raporcie mamy możliwość przejścia do trybu projektowania lub np. zmiany typu formularza.

 

Po wyłączeniu tych opcji i zamknięciu bazy aby ją ponownie uruchomić i mieć dostęp do obiektów i pełnej edycji to należy uruchamiać bazę z wciśniętym klawiszem SHIFT. Przytrzymanie tego klawisza powoduje pominięcie opcji startowych ustawionych powyżej.

Niestety niektórzy użytkownicy końcowi (przynajmniej u mnie w firmie) wiedzą że jest przycisk Shift, dlatego ja dodatkowo stosuję jeszcze dodatkowe zabezpieczenia w postaci zablokowania możliwości uruchomienia bazy w trybie pominięcia opcji startowych.

To zabezpieczenie polega na dodaniu dwóch procedur, jednej wyłączającej klawisz Shift a drugiej włączającej - cały kod tych procedur wraz z opisem można znaleźć na tej stronie:

https://support.microsoft.com/pl-pl/kb/826765.

Przed oddaniem aplikacji do rąk użytkownika w edytorze VBA w okienku Immediate wywołuję procedurę "DisableShift" - podczas ponownego uruchomienia bazy jeśli zostanie wciśnięty klawisz shift to zostanie to zignorowane i baza nie zostanie otwarta w trybie projektu.

Jeśli z kolei potrzebuję dokonać zmian w bazie to najpierw włączam bazę w normalnym trybie, następnie przechodzę do edytora VBA i w okienku "Immediate" wpisuję procedurę "EnableShfit". Następnie po zamknięciu bazy jestem w stanie ponownie ją otworzyć w trybie projektu z wciśniętym klawiszem Shift.

Oczywiście nazwy tych funkcji można sobie zmodyfikować dowolnie na sobie tylko znaną nazwę w zależności od konkretnego projektu, tak aby zminimalizować możliwość zhakowania naszej aplikacji przez użytkowników końcowych.

4) Na samym końcu można jeszcze zmienić rozszerzenie pliku accdb na acddr. To powoduje, że baza jest uruchamiana w trybie runtime i nawet bez wykonania pkt 2 i 3 użytkownik nie jest w stanie ani edytować kod VBA ani przeglądać/edytować obiekty bazy.

Pozdrawiam.
Łukasz Szydłowski.

Łukasz_Szydłowski
  • Odpowiedział
  • @ Łukasz_Szydłowski | 16.05.2016
    • 2
    • 1
    • 2
Komentarze
Dziękuję Łukasz. Trafiłeś w 10.
Skomentował : @ Michał_Gwiazdonik ,16.05.2016
  • 13
  • 9
  • 51