[ACCEPTED]-Generating a Hardware-ID on Windows-copy-protection
Windows stores a unique Guid per machine 1 in the registry at:
This used to be the CPU serial number but 5 today there are many types of motherboards 4 and this factor is not accurate. MAC address 3 can be easily forged. That leaves us with 2 the internal hard drive serial number. See 1 also: http://www.codeproject.com/Articles/319181/Haephrati-Searching-for-a-reliable-Hardware-ID
There are a variety of "tricks", but the 46 only real "physical answer" is "no, there 45 is no solution".
A "machine" is nothing more 44 than a passive bus with some hardware around. Although 43 each piece of iron can provide a somehow 42 usable identifier, every piece of iron can 41 be replaced by a user for whatever bad or 40 good reason you can never be fully aware 39 of (so if you base your functionality on 38 this, you create problems to your user, and 37 hence -as a consequence- to yourself every 36 time an hardware have to be replaced / reinitialized 35 / reconfigured etc. etc.).
Now, if your problem 34 is identify a machine in a context where 33 many machines have to inter-operate together, this 32 is a role well played by MAC or IP addresses 31 or Hostnames. But be prepared to the idea 30 that they are not necessarily constant on 29 long time-period (so avoid to hard-code 28 them - instead "discover then" upon any 27 of your start-up)
If your problem is -instead- identify 26 a software instance or a licence, you have 25 probably better to concentrate on another 24 kind of solution: you sell licences to "users" (it 23 is the user that has the money, not his 22 computer!), not to their "machines" (that 21 users must be free to change whenever they 20 need/like without your permission, since 19 you din't licence the hardware or the OS...), hence 18 your problem is not to identify a machine, but 17 a USER (consider that a same machine can 16 be a host for many user and that a same 15 user can work on a variety of machines ..., you 14 cannot assume/impose a 1:1 relation, without 13 running into some kind of problems sooner 12 or later, when this idiom ifs found to no 11 more fit).
The idea should be to register 10 the users in a somewhat reachable site, give 9 them keys you generate, and check that a 8 same user/key pair is not con-temporarily 7 used more than an agreed number of times 6 under a given time period. When violations 5 exceed, or keys becomes old, just block 4 and wait for the user to renew.
As you can 3 see, the answer mostly depends on the reason 2 behind your question, more than from the 1 question itself.
There are various IDs assigned to hardware 8 that can be read and combined to form a 7 machine key. For example, you could get 6 the ID of the hard drive where the software 5 is stored, the proc ID, etc. Some of these 4 can be set more easily than others, but 3 part of the strength is in combining multiple 2 pieces together that are not necessarily 1 strong enough by themselves.
Here is a program (also available as DLL) that 2 can read and show your computer/hardware 1 ID: http://www.soft.tahionic.com/download-hdd_id/index.html
More Related questions