Hi,

I have created a database using Access 03 and VB, and I will be letting some people use it shortly.

I would like to create a way in which the program cannot simply be copied onto another computer. I was thinking of using VB and referring to some system file, tag or information. Like if I could call up the information about the computer serial number and compare it to a set value. If the values don't match, the system exits. If it does then the program continues. I have tried to look up values that will be unique to each computer, or almost so, but cannot find anything useful to me.

Is there any items that I can lookup the values for (Sys vol, reg num, etc) for comparison purposes?

Thanks for your help

J

Dani AI

Generated

The suggestions from (bind to a per-machine identifier) and (use a registry value) are the usual quick fixes, but both are fragile. Hardware identifiers change (disk replaced, OS reinstalled, VM snapshots), registry entries can be deleted or edited, and simple checks are easy to bypass. A more resilient pattern is a signed-license model that ties a license to a composite machine fingerprint instead of a single mutable value.

Generate the fingerprint from several attributes (example: BIOS UUID, motherboard UUID, processor id, one or two stable NIC MACs, and a volume identifier) and hash them into a single fingerprint. Use a vendor-side process to create a license file that contains the allowed fingerprint, expiry/flags, and a digital signature. The client app verifies the signature with an embedded public key and checks the fingerprint match before running. WMI exposes many of the identifiers commonly used; see the Win32 classes for BIOS, processor and network adapters for reliable properties to sample ([Win32_BIOS], [Win32_ComputerSystemProduct], [Win32_NetworkAdapterConfiguration]). Use GetVolumeInformation for a volume serial when needed.

A minimal verification flow:

fingerprint = Hash(BIOS + Motherboard + Processor + MAC + Volume)
license = ReadLicenseFile()
if not VerifySignature(license, PublicKey) or license.fingerprint != fingerprint then ExitProgram

Operational notes: keep the private signing key offline; embed only the public key in the client. Provide a re-activation/appeal path for legitimate hardware changes. Store the license encrypted (or signed) and make tamper detection obvious. For Access-based apps, move UI/logic into a compiled front end and keep the MDB backend on a controlled server when possible; convert Access front-ends to an MDE/ACCDE to reduce casual tampering. For cryptographic guidance see Microsoft’s cryptography portal.

Recommended Answers

All 2 Replies

you can compare by taking the profile id of the harddisk being installed on a specific computer. u have to write the program in such a way that it should look for the harddisk profile id. if u want samples on how to get such element visit and search for "Disk Serial Number" under visualbasic

Hi,

You can always add a registry for you application. And on the first form your application will check if you are authorized to run the application by reading the value stored in registry editor and comaring it to a value stored in your application.
I have enclosed a sample application that contains both a sample VB application and registery file. First run the application before running the registry file and see how user will be prevented from using the application. Now run the registery file and test the application again. For retesting I added another button on the form that will delete the registry value.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.