Protecting the database - what kind of solution?

Thanks Shadow, I am assuming those options can be found in Tools-Startup.
Being a newbie at Access I can't figure out how to get the demo thing working, i.e. the syntax of the iif statement and where it goes.
sorry to be a pain
cheers
optidisk
 
I am assuming those options can be found in Tools-Startup

Most of them. You can search the forum to learn how to disable the SHIFT bypass.

Here's pseudo-code for the demo:

Splash Screen:
If (GetSetting (wherever you put it in the registry) = "100") then
Open the main form
ElseIf (Getsetting (wherever you store the demo date) is within the time range) then
Open the main form
Else
Open the Login form
End if

Login Screen:

If (the number in the textbox satisfies the formula) then
Savesetting "100" in the registry
Elseif (the text in the textbox = "DEMO") Then
Savesetting Date () in the registry
End if

SHADOW
 
Thanks a lot for all your help Shadow
 
Thanks Shadow for your help.
I couldn't get it working yet, I am doind something wrong but I just haven't figured out what yet.

Cheers
optidisk
 
Im new to modules and vba cound you tel me where to import the code ghudson used and how to activate it on my startup i use a form called shwitchboard and it opens up in access
 
shadow9449 said:
I just wanted to add 2 things:

1) The way I've set up that login screen is that if you type in 'DEMO', you don't need a registration code, but it stores the date in another registry key inicating when the demo period is up.

2) This system works even on a network. We charge per computer that uses the program, so every time they add another computer to the LAN, they need another code, and send another cheque. :D

SHADOW
lol @ another cheque :D
 
I've developed a method for copy-protecting an application which depends on on-line registration. It allows the user to download the entire application free from your website. On initial opening, a popup form invites free registration, with a command button that links to a page on your site which captures the user's details and sends a coded message to the application which initiates 30 days' free trial.

At end of free trial (or before) the user can complete full registration by the same method, except that this time payment (e.g. by PayPal) is required. A fully registered product runs on only one computer. A user with legitimate need to run on a different computer on the same licence can apply to you the vendor and if approved can re-register.

It all works but I have not distributed it to anyone (apart from one user who disappeared off the face of the internet after getting a free version of everything!) So if you have a package that needs protecting, we could make contact.
 
Powysian said:
I've developed a method for copy-protecting an application which depends on on-line registration. It allows the user to download the entire application free from your website. On initial opening, a popup form invites free registration, with a command button that links to a page on your site which captures the user's details and sends a coded message to the application which initiates 30 days' free trial.

At end of free trial (or before) the user can complete full registration by the same method, except that this time payment (e.g. by PayPal) is required. A fully registered product runs on only one computer. A user with legitimate need to run on a different computer on the same licence can apply to you the vendor and if approved can re-register.

It all works but I have not distributed it to anyone (apart from one user who disappeared off the face of the internet after getting a free version of everything!) So if you have a package that needs protecting, we could make contact.

Nice approach! Would save time on my staff, as we get calls all the time "my computer had to be reformatted" and so on.

SHADOW
 
I've developed a method for copy-protecting an application which depends on on-line registration. It allows the user to download the entire application free from your website. On initial opening, a popup form invites free registration, with a command button that links to a page on your site which captures the user's details and sends a coded message to the application which initiates 30 days' free trial.

At end of free trial (or before) the user can complete full registration by the same method, except that this time payment (e.g. by PayPal) is required. A fully registered product runs on only one computer. A user with legitimate need to run on a different computer on the same licence can apply to you the vendor and if approved can re-register.

It all works but I have not distributed it to anyone (apart from one user who disappeared off the face of the internet after getting a free version of everything!) So if you have a package that needs protecting, we could make contact.

How do you tell if they've paid? I'm assuming you'd need some record on your end to flag the client as paid.
 
I have a suggestion... is there a way to store a number a really random one so the registry match the one on the database, I suggest this because there are tools that sense the changes in the registry... and a static number (one that works with all the instances of the database) is not a good idea, even if the confirmation number comes from an out of this world math formula... if the hacker creates a registry key that put that "100" (static number) in the registry the database simply bypass that screen... Here is my suggestion... now one who code... please write the code to store the random number in the registry and store the same number in the database so everytime it loads the comparison takes place and if they don't match... load the login screen... with the alien math formula that creates the confirmation number. This way it doesn't matter if the hacker get the number from the registry.. it won't work for the other installations of the db.
 
Last edited:
Most of them. You can search the forum to learn how to disable the SHIFT bypass.

Here's pseudo-code for the demo:

Splash Screen:
If (GetSetting (wherever you put it in the registry) = "100") then
Open the main form
ElseIf (Getsetting (wherever you store the demo date) is within the time range) then
Open the main form
Else
Open the Login form
End if

Login Screen:

If (the number in the textbox satisfies the formula) then
Savesetting "100" in the registry
Elseif (the text in the textbox = "DEMO") Then
Savesetting Date () in the registry
End if

SHADOW

hi shadow
thanks for shareing this excellent code with us

the only part i dont get is the demo time this part below

ElseIf (Getsetting (wherever you store the demo date) is within the time range)

how do i set the time range?

thanks for all the help you have given

ps
its my first post so be gentle lolll

rob
 
just a general thought/observation

this sort of stuff is non trivial and is not quite plug and play. you do need to be sure you understand what is happening etc, before implementing these sorts of security measures
 
hi Gema-the-Husky

you are right to point this out! it is not plug and play. And it does alter the registery.

i understand all of this code and about registerys, but cant work out the time after date part is all

cheers
rob
 
I create a text file then I rename it as my ''special'' file with a special extension that will not open up if a curious user were to find it and try to double click on it to open it.

The below function is the basic routine [but not everything] that I run when the db is first opened. I keep a copy of the special file on a USB drive just in case I need to run it on the go. My routine will close the db if the special file is not found.

I use the WinZip Self-Extractor 2.2 version of WinZip for my users to install [extract] the neccessary files to their hard drive. The WinZip Self-Extractor 2.2 version allows you to lock the extraction process so that the user can not alter where the files are extracted to.

You could create a text file from code and use that as a part of your installation process. There is code floating around on how to do that. There are a lot of ways to booby trap a mdb file. My method works when needed for I am the only one who preforms the installation so I know the user never has a copy of the self extracting file. I only have a couple of db's that I worry about being transported and my home made method suits my needs.

Code:
\Public Function Verify_Special_File()
On Error GoTo Err_Verify_Special_File

    Dim sFile As String
    Dim sLocal As String
    
    'location of your special file
    sFile = "C:\SomeWhere\SpecialFile.xyz"
    'this allows me to run the file off of a USB drive
    sLocal = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) & "SpecialFile.xyz"

    If Dir(sFile) = "" Then
        If Dir(sLocal) = "" Then
            Application.Quit acQuitSaveNone
        End If
    End If
    
Exit_Verify_Special_File:
    Exit Function
    
Err_Verify_Special_File:
    MsgBox Err.Number & " - " & Err.Description
    Resume Exit_Verify_Special_File
    
End Function

Shadow, could you post your mehtod so that the others can see how to check and edit the registry? There is a lot of code involved and it might be more than some can handle. Forcing a registration code is a good way to see who is using and installing your db.

hi
nice code works like a charm thanks :)
 
another way

among other things,

i get my users to login via my own login screen (not access security) - when they login the login id is stored in a user table which is limited to a specific number of rows.

If all the rows are active, the next user wont be able to login.

now built in to a normal table, is an encrypted field that determines the number of permitted users (eg 2,5,10)

the first thing the programme does is check that the available user login slots match the permitted no of users

therefore even if they copy the dbs, they wont be able to login more than the maximium number of times, because the user slot table is full.
 
another way

among other things,

i get my users to login via my own login screen (not access security) - when they login the login id is stored in a user table which is limited to a specific number of rows.

If all the rows are active, the next user wont be able to login.

now built in to a normal table, is an encrypted field that determines the number of permitted users (eg 2,5,10)

the first thing the programme does is check that the available user login slots match the permitted no of users

therefore even if they copy the dbs, they wont be able to login more than the maximium number of times, because the user slot table is full.

sounds like a good idea :)

could you upload a working demo of this?
sounds like it will do what i need

thanks gemma :D
 
sorry, i dont realy want to post it, it took me absolutely ages to get it working - it was more intended as a suggestion in line with the others
 
ok no probs ;)

ill have a go at codeing something simular
thanks for the info m8 :)

rob
 

Users who are viewing this thread

Back
Top Bottom