So I have a database that we plan to distribute to multiple agencies for internal auditing use. We are looking to protect the structure to a degree. This is not data security by any stretch, but just keeping the end users from accidentally breaking anything or snooping about in the code. We can release as an ACCDE, but some of our users are on Access 2003 and it has been ‘trying’ at best to redesign the DB for that level of backwards compatibility. In the past these agencies have had no issues with ACCDBs we send, but the ACCDEs just seem to crash and burn. When we started we were not aware anyone was still on a version that old and have since encouraged those folks to get on Access 2016 runtime as the do not use Access for any databasing of their own.
Regardless, I was hoping someone here would be kind enough to check my work/thinking.
I have set the DB to create the ‘AllowBypassKey’ property and set it to ‘False’ when the front page is loaded. So long as I have loaded the front page once before distributing then you should not be able open the VB objects. To keep myself from being locked out I have a control on the front page that checks for a ‘password’ and if it is correct will then switch the ‘AllowBypssKey’ to ‘True’. This control is set to blend into the background so it’s pretty seamless visually.
In theory, this should prevent anyone without the ‘password’ from nosing about under the hood regardless of ACCDB or ACCDE distribution. Am I missing something else that I should be adding here. This seems like a simple/elegantish solution… but it also seems a bit too easy…
And to be clear, this is not data that needs to be separately secured just trying to protect the code a bit.