Does anybody know of a good way of uniquely identifying a computer in Windows 95 / Windows NT? (must work under both OS)
What I am looking for is a way to make a program run on one machine only via a registration file that contains system specific data. The data shouldn't change frequently because that would upset my users! (imagine adding some RAM to your system and some programs stop working!) On the other hand, the user should not be able to easily modify the underlying values, because that would break my "copy protection"... (users will mostly be computer science students! *sigh*)
The best thing would be to retrieve some hardware information from the bios, but that seems to be very hard or close to impossible from standard Win32 programs?? Here are some things I have thought of, but I'm not quite happy with them:
a) Windows user name / logon name -> can be changed easily
b) list of drives and types -> might also change even for fixed drives (I have a hard drive with 6 partitions in a 5½" slot and can remove it at will).
c) serial number of drives -> same problem, also might be too easily "faked"
d) RAM size -> changes too often
e) making a secret registry entry -> too easily detected (e.g. with tools like regmon)
f) creating a hidden file somewhere -> too easily copied :-((
Of course I could use some wild combination of all of the above (e.g. create a secret file somewhere and store the creation date/time in the registry for verification) which would make it a real pain to break the protection, but it I'm afraid it would also be a real pain to program it and it would be somehow messy...
Also, I would "prefer" the program to keep working even if Windows is reinstalled...
I really don't know what to do - any helpful ideas?? I'll increase the points to 200 for a "very good" solution that is not some weird patch...
Thanks a lot!!