Question

How to COPY-PROTECT Access Application

Asked by: kkan


What is the most effective way to protect my Access Application from being copied by my customers. Given the fact that I intend to install each copy of my software personally.

Thank you

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2002-05-11 at 16:06:26ID20299600
Tags

access

,

protect

,

copy

Topic

Microsoft Access Database

Participating Experts
5
Points
250
Comments
26

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. copy protection
    I am trying to figure out a simple way to copy protect floppy disks. I thought of having the program read the floppys serial number (the one that gets assigned when the disk is formatted) since this is fairly unique, but I notice that if a disk is copied using the Windows di...
  2. Protect worksheets
    I am trying to "protect" worksheets so that deletion/addition/resizing of rows and columns are prohibited. Do you know how to?
  3. protect my files from being copy!
    I, WANT TO KNOW IF THERE IS A SOFTWARE OR SOME UTILITY THAT COULD PROTECT MY FILES IN MY COMPUTER OR WHEN I MAKE A CD COPY OF MY FILES, I ONLY WANT THEN TO BE READED BUT NOT TO BE ABLE TO BE COPIED! IF SOMEBODY TRYS TO COPY THE FILES WON'T WORK OR WON'T OPEN!
  4. Copy Protection
    I am a software developer.I have developed a software in Visual Foxpro and copied it on CD. How can I make my CD copy protected.

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: nico5038Posted on 2002-05-11 at 17:18:25ID: 7003757

1) A good relation with the customer
2) Good support
3) Newer versions with better functionality
4) Some technical "tricks" that make it harder but never impossible to copy your application.

I deliberately placed the tech-solution at the bottom.
All protection can be cracked finally.
Simple measurements often give the best results.
Making a .mde will protect your code and hinding tables and database-form the next obvious protection, but adding e.g. registry checkingcode can prevent simple copying, but can always be "intercepted".
Often these protection measurements "criple" the system and in case there are "normal" problems it might be extra problematic to solve.

Nic;o)

 

by: mlmccPosted on 2002-05-11 at 19:37:13ID: 7003907

We use a method that I wouldn't call copy protecting but it does tend to prevent casual users from breaking into the database itself.  As stated above a determined, knowledgeable user will eventually break into the database.  Our database is locked so only the database owner can open it to expose the underlying tables, forms, and code.  All users must login with their own password and they are presented a main form that when exited terminates their session.

This doesn't prevent a user from copying the database to another lan or to their own PC but since it is multiuser by nature their is no real advantage to them to do so.

I agree with the comments above.
Develop a good working relationship with all your customers.
Be responsive to their needs.
Provide upgrades periodically.  
Mainly you need to make yourself relatively valuable to your customers otherwise they may look elsewhere.

good luck
mlmcc

 

by: Richie_SimonettiPosted on 2002-05-11 at 19:49:15ID: 7003918

"....
Making a .mde will protect your code and hinding tables and database-form the next obvious protection
...."
i could agree with you but you don't hide tables.
In that case, shift key can be disabled also.

 

by: kkanPosted on 2002-05-12 at 07:31:24ID: 7004443

Thanks for your comments everyone.


My application is designed for local law firms in Barbados. I will be having them sign a licence agreement which (among other things) prohibits copy and distribution. With the larger firms I am not too worried about copying. The smaller firms I'm not too sure about. But I'm fairly certain that the application will not be subject to the manipulation of a knowledgeable access user, simply becuase there's no such person down here.So I'm really looking for a simple form of copy-protection against the unsophisticated user.


Given my intent and what I've learned from your comments and from checking Access Help. Here is what I plan.

1. SPLIT my application into two files using the wizzard
2. Convert the file with only forms into an .mde.
3. Hide the table and form files in different locations in the hard drive and put a short cut on the desktop only for the "Forms" file.


One question though. Will my "Forms" file be able to find my Table file if they are in differnt locations if I split the DB using the wizard?

Looking forward to any further comments suggestions.

Thanks Kan

 

by: nico5038Posted on 2002-05-12 at 08:41:30ID: 7004514

When you have splitted the database in a front-end a back-end, then the tables will be linked and will have to be relinked when the back-end is placed on a different location.
Best way to go is to use the network address of the backend, otherwise you'll get "tangled up" with the possible different driveletters a user can have.

A small additional "copyright help" might be to print this on all reports together with the name of the firm having the license. Having this on every footer and coming out of the code behind the report will make it harder for others to use it...

Nic;o)

 

by: Richie_SimonettiPosted on 2002-05-12 at 13:33:46ID: 7004788

If you will install your app by yourself, you could use the disk-serial approach. I mean, every HD has its own serial number, you could manage it to do really custom installation.
If you save the disk-serial information (in a property of some from/class, registry, cryted, and check for it every time app is running, sure the app will not works over other HD, hence other PC.
It has a backward, if disk is formatted or broken, you have to do the installation again by yourself.
Hope it helps.

 

by: kkanPosted on 2002-05-13 at 04:56:30ID: 7005737

Nic;o and Richie Simonetti

Nic;o
So I will have to recconnect every table. That may be arduous. As far as putting the name the licencee on the reports I can't do that b/c the reports are replicas of government issued forms. But some of the forms require information about the user. So I will be hardwiring the required information about the user into various reports, thereby limiting the use of those particular reports to the specific user, but most of the reports/government forms do not require user information. Ps. Thank you for pointing me in the direction of the .mde.


Richie,

Your idea re: the hard drive serial number is EXACTLY what I had initially invisioned. I would love to use your approach, since I will always be installing the software myself and installation is not tediously time consuming. Please tell me more about how to go about using your this approach. I have another 150 points left and I would gladly add them to the value of this question if someone could walk me through applying your approach regarding getting access to confirm the serial number of the hard drive each time my application/db is opened.

Many thanks to both of you.

Kan

 

by: Richie_SimonettiPosted on 2002-05-13 at 07:18:46ID: 7006100

Well, create a macro called autoexec that would runs this code:

Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName _
As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As _
Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long

Public Function CheckSerial(ValSerial As Long) As Boolean
' You need to check  if is first run. If so, save Serial value on
' some place. It will be used as parameter to this funcion
' next time.

Dim Serial As Long, VName As String, FSName As String
    'Create buffers
    VName = String$(255, Chr$(0))
    FSName = String$(255, Chr$(0))
    'Get the volume information
    GetVolumeInformation "C:\", VName, 255, Serial, 0, 0, FSName, 255

If ValSerial Mod Serial = 0 Then
    CheckSerial = True
Else
    CheckSerial = False
End If

End Function

 

by: Richie_SimonettiPosted on 2002-05-13 at 07:19:56ID: 7006106

Note that it is a generic routine, it must be ameliorate to your needs. If you cannot by yourself, let me know, i will be glad to help.
Cheers

 

by: nico5038Posted on 2002-05-13 at 08:27:49ID: 7006374

Hi Kan,

Your comment:
>So I will have to recconnect every table.
is a bit "too" harsh. All that's needed will be the activation of the linked table manager under the tools menu. When the frontend is installed on every individual machine you'll need to do this once, but when the frontend is situated on the server, this might disturb the use for other users when the drive name isn't for all the same. Using the \\... network reference will solve this.

Nic;o)

 

by: PuzzledbyPosted on 2002-05-14 at 06:53:46ID: 7008599

Hi,
One of the things I do to protect the Db from being moved is a make a seperate DB with a table that has a field with a number in it. I then make this DB password protected and save it as an MDE. Now in my main DB I link the MDE with something like MSysDB_Key. The code to look as this table is on the form that you open the DB with. On the open event for that form place the following:
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb()
 Set rs = db.OpenRecordset("MSysDB_Key", dbOpenDynaset)
 rs.Edit
 If rs!KeyCode <> 5452 Then
 MsgBox "No Key Code found for this software"
 rs.Close
 Quit
 End If
 rs.Close

 This may not be the best approach but it does prevent a user fram taking the DB to another machine. The table can not be linked unless you know what is the password and you can also hide the DB. Also I make the field not visible.
Hope this helps.

 

by: nico5038Posted on 2002-05-14 at 08:49:59ID: 7008932

Hi Puzzledby,

See you're new so welcome to EE.
It's customairy to post comments iso answers, as that will keep the questione better visible in the "to be answered" section and doesn't force the questionner to take action.

Please read the lines at the bottom...

Nic;o)

 

by: PuzzledbyPosted on 2002-05-14 at 21:20:48ID: 7010207

Hi,
One of the things I do to protect the Db from being moved is to make a seperate DB with a table that
has a field with a number in it. I then make this DB password protected and save it as an MDE. Now in
my main DB I link the MDE with something like MSysDB_Key. The code to look as this table is on the form
that you open the DB with. On the open event for that form place the following:
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb()
Set rs = db.OpenRecordset("MSysDB_Key", dbOpenDynaset)
rs.Edit
If rs!KeyCode <> 5452 Then
MsgBox "No Key Code found for this software"
rs.Close
Quit
End If
rs.Close

This may not be the best approach but it does prevent a user fram taking the DB to another machine.
The table can not be linked unless you know what is the password and you can also hide the DB. Also
I make the field not visible.
Hope this helps.

 

by: Richie_SimonettiPosted on 2002-05-15 at 07:02:00ID: 7011068

Well, i have a mdb file if you want to try my approach.
Cheers

 

by: Richie_SimonettiPosted on 2002-05-15 at 20:34:51ID: 7012854

Well, this is one possible implementation:
In your mde file  create a table, i called it LocalCfg with two fields
RecordId     ->Long
StartDt          ->Date

You  need to add a macro called Autoexec, action: Run code (or execute function,
i don't know since i have Access in spanish, sorry). The function that this macro would
execute is: CheckIfIsCopy.

In a module:
Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long


Public Function CheckIfCopy()
Dim serial As Long
Dim rs As Recordset
GetVolumeInformation "C:\", vbNullString, 0, serial, 0, 0, vbNullString, 0
Set rs = CurrentDb.OpenRecordset("select * from LocalCfg", dbOpenDynaset)
With rs
    If .RecordCount < 1 Then
        CurrentDb.Execute "insert into localcfg (id,Startdt) values(" & serial & ",#" & Now() & "#)"
    Else
        If serial Mod .Fields("id") <> 0 Then
            MsgBox "License not Found", vbInformation, "Init Fails"
            Application.DoCmd.Quit acQuitSaveNone
        End If
    End If
End With

End Function


If you use ADO, changes are required but the idea is basically the same.
PS: Don't forget to disable Shift key

 

by: dynamictigerPosted on 2002-05-16 at 14:37:16ID: 7014981

I use a simple direct and different approach.  I set up a table of the client details.  I set up a module containing the client details, which I then make invisible.

On start up of the splash screen I compare the table with the client details to the module.  If they do not match the software has been priated.  At that point the software destroys the modules responsible for all calculations and the hidden module.  Simultaneously I send an email with details of the changed client details to my computer.

I then distribute as an MDE file.  This means a simple hack job of the backend would deactivate the entire code, and tell me who was doing it (provided they are connected).

 

by: Richie_SimonettiPosted on 2002-05-16 at 14:51:38ID: 7015007

Hi kkan, any progress/need more help? Just ask.

dynamictiger, i am not the King of THE Truth, sure there are several approaches to get it work.

 

by: kkanPosted on 2002-05-19 at 07:47:56ID: 7019735

Hi everyone.

I am VERY grateful for the multiple suggestions. I have however been busy with a few bugs that my tester seems to enjoy uncovering and I have not been able to direct my attention to my copy protecting.

I apologize for the delay in my response but will get to this as soon as I can.

Incidentally I favour Richie Simonetti's approach and intend to use it if I can get it to work.

Richie:

Please email a copy of the mdb file at containing the exaple of you approach to:

cariblaw10@netscape.net


Many thanks again to everyone.

kan

 

by: kkanPosted on 2002-05-19 at 07:56:17ID: 7019742

Hi puzzledby.

Thanks for your suggestions. It's actually an approach I also considered. (Creating a linked table with a field containing a verification/code number). The problem that I came up with is that most if not all of my clients will be using access only for my application. So in order to copy my applicatoin all the user would have to do is search and copy all access mdb, mde files and then copy those onto another computer. Please let me know if I misunderdtood your suggestion.

Thanks Kan

 

by: kkanPosted on 2002-05-19 at 20:50:50ID: 7020719

Richie Simonetti,

Just checking in to see if you had an opportunity to email that sample to me. I checked my email but is was full so I hope your email didn't bounce. I have emptied it now so it shuold be able to recieve mail.

Looking forward to your reply and I hope that you had a good week end.

 

by: Richie_SimonettiPosted on 2002-05-19 at 21:10:41ID: 7020743

I was indeed at weekend i will email you mdb as soon as possible.
Cheers
PS: here is 1:00 AM Monday, i think i could sent it to you by 9:00 AM when i would be at Office.

 

by: kkanPosted on 2002-05-20 at 13:08:29ID: 7022336

Thanks Richie

Looking forwarding to getting your email.

 

by: PuzzledbyPosted on 2002-05-21 at 07:42:49ID: 7024209

Hi kkan,
You are correct in that they can copy all mdb's and mde's but they must also relink the tables and they must also be in the correct folders. If the mde is password protected then the table can't be relinked if they do not know the password. I also make the main mdb into a mde with password protection. The mde can also be hidden by setting it's attribute. I also turn off the option in access not to show hidden tables or system tables. It would be nice to make the hidden table into a mda pointing to code imbedded into the registry but the same can be done with a mde. Even further have the mde place the hard disk serial number in the same table. Then make a compare of the Hard Disk SN with that in the mde.
Of course a knowledeable person with a just a little difficulty would be able to hack this approach.
Thanks for the comment!

 

by: Richie_SimonettiPosted on 2002-06-26 at 14:57:54ID: 7112110

Hi kkan, any progress, need more help?, just ask...
Cheers

 

by: kkanPosted on 2002-06-28 at 21:49:32ID: 7117909

My apologies for awarding you the points so late.

Been and continue to be extremely busy.

Many, many, ,many thanks.

Kan

 

by: Richie_SimonettiPosted on 2002-06-29 at 10:26:46ID: 7118910

Thanks for "A" grade.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...