There is a way that only a very knowledgable user would know of and even
then may not find.
First, you should be delivering an mde so users cannot see any code.
Now, you can add a property to a database. You should be able to find the
code to do that. Sorry, I don't have the time at the moment to look it up.
But here is the concept.
If you try to get the value of a property and it doesn't exist, then you
will get an error. In the error routine, add a property to the database
that is the current system date.
But wait, you say. What is to keep the user from resetting the system date?
This will take care of that pretty well.
Use two properties. Installed Date (the first time it was run) and last
opened date(The last date/time the user opened the database).
Now if the when the user opens the database and the system date is < either
of the two dates or the exipration date has passed - Docmd.Quit
That way, you can tell if the user is setting the system date back.
The reason to use an mde is to avoid the user being able to crack into your
database and read the code.