Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's a good way to uniquely identify a computer?

I'm developing some desktop software for a client to resell. The client wants to restrict the software so that the registration code will be specific to one and only one computer.

Besides using the MAC from the network card, does anyone have any other techniques (that work on both Windows and Mac OS X) for uniquely identifying a computer?

like image 871
Paul Lefebvre Avatar asked Mar 23 '09 00:03

Paul Lefebvre


People also ask

How are computers uniquely identified?

A Universal Unique Identifier (UUID) is a 128-bit number used to uniquely identify some object or entity on the Internet. A global unique identifier (GUID) is a number that Microsoft programming generates to create a unique identity for an entity such as a Word document.

How do I identify my computer?

Click on the Start button. In the search box, type Computer. Right click on This PC within the search results and select Properties. Under Computer name, domain, and workgroup settings you will find the computer name listed.

How can I identify my laptop uniquely?

Go to Start menu and type cmd in 'Run' box. This leads to a window where you need to type ipconfig/all. You will get several numbers, including the physical address number. Or, one can ask the laptop vendor to indicate the number.


2 Answers

Another solution is to use a licensing technology with a dongle. This is a small device that plugs into USB or another I/O port on the host, and serves as a unique, physical key to activate the software.

A third solution is to provide a license manager. That is, when the software starts up, it queries a server on the network (either on the customer's LAN or else accessed at your company via the internet) that validates that the customer's usage of the software is legitimate. This is a good solution for "concurrent licenses" so customers can install your software on many hosts, but you license it for simultaneous use on a limited number of hosts. FLEXnet Publisher is an example of a license management solution.

The MAC address of the network card is the solution I used last time I worked for a company that licensed software to run on a specific host.

However, I want to offer a caution: if you do this type of licensing, you have to anticipate that it'll become an ongoing administrative chore to track your customers' licenses. Once you have a few hundred customers, you'll be amazed at how frequently you get phone calls with requests to change keys

"We upgraded our server to a gigabit network adapter, and now the license won't work because the new adapter has a different MAC address."

Or else the customers may replace their whole machine, and need an updated license to run your software on the new machine. We got these calls practically every day at the company I worked for.

You also need to trust the customer to stop using your software on the old computer (or network adapter) if you give them a new key. If you couldn't trust them to obey the license in the first place, how can you trust that they'll throw away the old key?

If you don't plan how you're going to support this administrative activity, don't license your product in this way. You'll only inconvenience your good customers, who would have cooperated anyway.

like image 84
Bill Karwin Avatar answered Oct 14 '22 10:10

Bill Karwin


best way is taking the UUID using C# in Windows

The Best Way To Uniquely Identify A Windows Machine

public string GetUUID() {     var procStartInfo = new ProcessStartInfo("cmd", "/c " + "wmic csproduct get UUID")     {         RedirectStandardOutput = true,         UseShellExecute = false,         CreateNoWindow = true     };      var proc = new Process() { StartInfo = procStartInfo };     proc.Start();      return proc.StandardOutput.ReadToEnd().Replace("UUID", string.Empty).Trim().ToUpper(); } 
like image 27
Dilan Wickramarathna Avatar answered Oct 14 '22 09:10

Dilan Wickramarathna