security of code

M

mike allen

i have grappled w/ this for some time. i create programs that use excel
spreasheets as input sheets, have vba code in modules called w/ buttons,
then use excel spreadsheets as output (pretty typical of this group i would
guess).
my problem is i have noticed people copying these files to friends, etc. and
i would like to prevent this. i envision something like:
sub MainCode()
if computerID = 12983746abg12 then 'this is the key
else
msgbox "this code not allowed on this particular computer"
end
end if
'code here
end sub

the catch here is: is there a serial number, computer ID, or something that
is unique and not easily changed w/in each individual computer? you can
even assume nothing but stand alone pc's.
any other thoughts if this is not possible? thanks, mike allen
 
G

Guest

You could try and use the computer ID or user name or similar but in all
honesty it won’t be that reliable. An easier method would be to store a
license key number in the registry and check for that - any reasonably long
number would do and most users won’t go hunting for it. You’d need to make
sure you set a password for your VBA project as well though.
 
M

mike allen

that sounds good, but how do you store a license key number in the registry
and how do you have code check for it? thanks, mike allen
 
G

Guest

The simplest way is to use


SaveSetting (appname, section, key[, default])
GetSetting (appname, section, key[, default])

which writes to, reads from
HKEY_CURRENT_USER\Software\
VB and VBA Program Settings\appname\section\key


so
SaveSetting "MyAPP", "Startup", "License", "12345"

You can obviosuly view this by running regedit.

the help files cover this in more detail
 
T

Tim

<snip>

Another way to secure your code is to write a COM add-in. There is another
user group that tells you how to do this. It's not a simple matter, but if
the code is 'intellectual proporty, you should consider it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top