74 lines
3.9 KiB
Plaintext
74 lines
3.9 KiB
Plaintext
Notes for protecting Access Databases with Dinkey Pro/FD
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Before doing anything it is a good idea to make a back-up of your database. It is
|
|
possible to protect your database so well that you may have trouble accessing
|
|
it yourself!
|
|
|
|
1. For Access 2007 and newer, view your form and then chose design view and view
|
|
the properties for your form (choose the event tab).
|
|
|
|
For versions before Access 2007, open your form in Design View. Now click on
|
|
View > Properties and choose the "Event" tab.
|
|
|
|
2. You should now see the list of events associated with your form. Set the
|
|
"On Open" entry to "=OpenStartup()". This will cause your database to launch
|
|
this function when it is first loaded.
|
|
|
|
3. For Access 2007 and higher in the Database Tools tab launch the Visual Basic editor.
|
|
|
|
4. In the editor, select File > Import File... and choose the file DinkeyPro.bas
|
|
to add this module to your project.
|
|
Repeat this step to add DPSample.bas to your project as well.
|
|
This VBA code will check for the Dinkey Pro/FD Dongle. If a dongle is found your
|
|
database will continue to load. If a dongle is not found then it will display
|
|
an error message and your database will not be loaded.
|
|
|
|
5. You will need to supply a locked copy of dpwin32.dll with your database. To
|
|
support 64-bit versions of Access, you will also need to supply a locked dpwin64.dll.
|
|
These DLLs should be located in the same directory as your database. If the
|
|
relevant DLL is not found an error will occur. It is recommended that you rename
|
|
the DLLs with names individual to you. In this case you must also modify the
|
|
references to dpwin32.dll and dpwin64.dll in DinkeyPro.bas to use the new names.
|
|
|
|
If you load your database at this point and dpwin32.dll is found it will
|
|
return error 413: program not protected.
|
|
|
|
6. Lock the DLL(s) using the API method of protection using DinkeyAdd. You can
|
|
specify the output path to be the folder that contains your database so that
|
|
the locked DLLs are in the correct location.
|
|
|
|
7. You now have to do one more thing. Currently the user could load your
|
|
database and then remove the call to check the protection and therefore have
|
|
an unprotected copy. You must stop them doing this by saving your database
|
|
as an ACCDE file (MDE file for Access prior to 2007). This compiles all the
|
|
VBA code and stops it from being editable by an end user. You must save a
|
|
copy of your original database otherwise you will not be able to make any
|
|
changes either! You will distribute the ACCDE (MDE) file to your customers.
|
|
|
|
To save your database as an ACCDE file, choose the Database Tools tab and choose
|
|
"Make ACCDE". (for versions prior to 2007 choose "Save As" and change the type
|
|
to a MDE file).
|
|
|
|
Note - the VBA code in this sample is the same as the Visual Basic sample code we
|
|
provide, except that we need to catch whether the DLL is missing or not (VB
|
|
will terminate the program if the DLL is not found but VBA will display an error
|
|
but continue to load the database).
|
|
|
|
Note - You only need to copy the relevant sample code functions that you need. All
|
|
comments in your VBA code are visible in your spreadsheet file so be careful
|
|
what you say! You should remove all our comments.
|
|
|
|
Note - Code marked with !!!! are places where you should customise the sample code so
|
|
that it will work properly:
|
|
|
|
* Change the SDSN value from 10101 to the value of your SDSN in the 10 main functions.
|
|
* Change the MY_PRODCODE value to the Product Code in the dongle
|
|
* Change the MyAlgorithm code (if you call a user algorithm)
|
|
* Change the CryptDRIS code (if you encrypt the DRIS)
|
|
* Change the CryptApiData (if you encrypt Data you send to our API)
|
|
* Change the MyRWAlgorithm code (if encrypt Data you send to our API using the R/W algorithm)
|
|
|
|
You will also probably want to replace our error messages (DisplayError) with your own.
|
|
|