Use the GetSetting SaveSetting commands to make a Registry Entry. As long as they cannot determine the location of the entry in the Registry, or look at your code, you should be OK.
The conventional wisdom is to make the Registry key the name of the program, but that might be too easy.
Use the Windows API functions GetUserName and GetComputerName in a Visual Basic subroutine which runs as the workbook opens. If it is the wrong computer (or user) just give a message and close the workbook.
(You must disable the CTRL-Break or ESC key so the user cannot break the macro as the message is displayed.)
Have not tried this, but I am using the two mentioned API calls to create a log in a file as it is saved!
With Regards, Knut.