isladogs
MVP / VIP
- Local time
- Today, 07:41
- Joined
- Jan 14, 2017
- Messages
- 18,717
This is a follow on from a discussion in this thread:
https://www.access-programmers.co.uk...d.php?t=297683
The OP (bruno 1970) wanted to secure his database applications against piracy by linking the app to the computer hard disk number.
I realise this has come up before & I apologise if a definitive answer has already been done elsewhere
Anyway, I'm having a similar issue and rather than hijack that thread further, I hope this new post will trigger some new ideas
If anyone knows a better way of doing what I'm about to describe, please let me know
My current approach to my apps is as follows:
I distribute my databases via my website as EXE files created by a professional installer program (SamLogic Visual Installer).
All current apps are sold as 32-bit/64-bit ACCDE files (except where code is purchased as an extra). They are fully locked down with no ribbon or nav pane & the shift key bypass disabled.
Until now, most of my databases were sold with site licenses which means I hadn't needed to worry about the number of times it is installed.
I can easily prevent the installed database being COPIED to another PC by checking against registry data created during a proper installation.
If that's missing or there's a mismatch, the app won't run.
So far so good.
The problem for me is that I now want to distribute apps where the licence is limited to a specified number of PCs e.g. 5.
One recommended solution is indeed to 'tie' the app to the hard drive it is installed on.
Attached are two apps (taken from earlier threads) which are designed to do exactly this. I'm sorry but I don't know the author of either of these.
If anyone knows the authors or a link to the original threads please let me know
Both of these apps can check:
a) logical hard drive serial numbers (which change when the drive is reformatted)
b) physical hard drive number as issued by manufacturer (i.e. fixed)
c) motherboard & CPU numbers
So if an app is COPIED to another PC, this is detected & the app is prevented from running
However, this approach has a MAJOR flaw which I think renders the solution useless.
If you just download multiple copies of a db containing hard disk checking code of this type, each will be valid on the computer it first runs on.
Similarly that method won't prevent multiple installations if you install using an EXE file as I do.
At the moment therefore, I believe the only realistic way to prevent users installing more copies of a database than the number of licenses they own is to use the standard activation method. Hated by all but widely used by large software suppliers because it works
i.e. allow unlimited number of installs but have the program run in evaluation mode for e.g. 30 days during which time the user can get the app activated by the app supplier (in this case - me).
When a user sends an activation request, it will be 'silently accompanied by' info about that computer hard drive/CPU etc. I then check the number of licenses in use don't exceed the number purchased & issue activation code (or not) as appropriate
If the app hasn't been activated by the end of that evaluation period, it is automatically permanently disabled.
The issue with this is I have to keep a record of the number of activated PCs.
Also users changing PCs or hard disks have to go through the hassle of getting activation redone.
Of course, I'm well aware that even this approach can be hacked by those in the know - billions of examples of activation hacks online.
No system will ever be absolutely foolproof - however it should be possible to prevent casual piracy.
https://www.access-programmers.co.uk...d.php?t=297683
The OP (bruno 1970) wanted to secure his database applications against piracy by linking the app to the computer hard disk number.
I realise this has come up before & I apologise if a definitive answer has already been done elsewhere
Anyway, I'm having a similar issue and rather than hijack that thread further, I hope this new post will trigger some new ideas
If anyone knows a better way of doing what I'm about to describe, please let me know
My current approach to my apps is as follows:
I distribute my databases via my website as EXE files created by a professional installer program (SamLogic Visual Installer).
All current apps are sold as 32-bit/64-bit ACCDE files (except where code is purchased as an extra). They are fully locked down with no ribbon or nav pane & the shift key bypass disabled.
Until now, most of my databases were sold with site licenses which means I hadn't needed to worry about the number of times it is installed.
I can easily prevent the installed database being COPIED to another PC by checking against registry data created during a proper installation.
If that's missing or there's a mismatch, the app won't run.
So far so good.
The problem for me is that I now want to distribute apps where the licence is limited to a specified number of PCs e.g. 5.
One recommended solution is indeed to 'tie' the app to the hard drive it is installed on.
Attached are two apps (taken from earlier threads) which are designed to do exactly this. I'm sorry but I don't know the author of either of these.
If anyone knows the authors or a link to the original threads please let me know
Both of these apps can check:
a) logical hard drive serial numbers (which change when the drive is reformatted)
b) physical hard drive number as issued by manufacturer (i.e. fixed)
c) motherboard & CPU numbers
So if an app is COPIED to another PC, this is detected & the app is prevented from running
However, this approach has a MAJOR flaw which I think renders the solution useless.
If you just download multiple copies of a db containing hard disk checking code of this type, each will be valid on the computer it first runs on.
Similarly that method won't prevent multiple installations if you install using an EXE file as I do.
At the moment therefore, I believe the only realistic way to prevent users installing more copies of a database than the number of licenses they own is to use the standard activation method. Hated by all but widely used by large software suppliers because it works
i.e. allow unlimited number of installs but have the program run in evaluation mode for e.g. 30 days during which time the user can get the app activated by the app supplier (in this case - me).
When a user sends an activation request, it will be 'silently accompanied by' info about that computer hard drive/CPU etc. I then check the number of licenses in use don't exceed the number purchased & issue activation code (or not) as appropriate
If the app hasn't been activated by the end of that evaluation period, it is automatically permanently disabled.
The issue with this is I have to keep a record of the number of activated PCs.
Also users changing PCs or hard disks have to go through the hassle of getting activation redone.
Of course, I'm well aware that even this approach can be hacked by those in the know - billions of examples of activation hacks online.
No system will ever be absolutely foolproof - however it should be possible to prevent casual piracy.
Attachments
Last edited: