Click here to Skip to main content
15,868,054 members
Articles / Programming Languages / C#
Article

Generating a unique computer/user ID using C#

Rate me:
Please Sign up or sign in to vote.
1.00/5 (28 votes)
11 Apr 20062 min read 138.5K   2.9K   34   25
How to generate a unique computer/user ID, using C#, which can be used for user tracking, software licensing, etc.

Demo project screen-shot

Introduction and Background

I recently had to create an application with a registration system which would be used by many users at the same time, each of them purchasing their own license.

The idea was the following: the user purchases a license key, which he/she then enters into the application (which could be downloaded freely). The application would contact a central server, which would return an activation request serial number. This would then be sent to the license reseller, who would generate an activation key, which would in turn be entered into the application by the user.

I needed some way of uniquely identifying each computer with ease, to ensure that no two users could use the same license key, yet each user could establish several connections to the server.

In this article, I will show you how I accomplished this task.

The actual code

I solved the problem by making use of the computer name, username, and user domain, the number of processors, and the number of logical drives which are installed on the computer. This way, even a multi-user system would require each user to register their own copy of the application, but no user could use the same license on more than one computer.

First, create a new Windows application, and add a button plus textbox to your form.

In the button1_click routine, add the following code:

C#
textBox1.Text =  // Set the contents of textBox1 to:
    Environment.ProcessorCount + "/" +       //
    // {number of processors}/{machine name}/
    Environment.MachineName + "/" + 
    // {user domain}\{username}/
    Environment.UserDomainName + "\\" +
    // {number of logical drives}
    Environment.UserName + "/" + 
    Environment.GetLogicalDrives().Length;   //

The code should be fairly easy to understand.

Points of Interest

The disadvantage to this method is that the same conditions can be simulated, but with some difficulties. This method should not be used where expensive software is licensed - I used this for cheap licensing of small software.

This method still needs some enhancements to be ready for big software.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Netherlands Netherlands
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 1 Pin
majidsharifi31-Mar-14 1:07
majidsharifi31-Mar-14 1:07 
pooor
GeneralUnique Id for my System Pin
Mamuly25-Jul-10 19:10
Mamuly25-Jul-10 19:10 
GeneralSerial number is only suppose to be unique Pin
michaelnoam16-Jun-10 5:10
michaelnoam16-Jun-10 5:10 
GeneralMy vote of 1 Pin
knowge19-May-10 0:53
knowge19-May-10 0:53 
AnswerMachineGUID Pin
Kurtz NatureBoy29-Apr-10 3:05
Kurtz NatureBoy29-Apr-10 3:05 
GeneralAnother Simple and Reliable Alternative Pin
Weifen Luo1-Mar-10 14:26
Weifen Luo1-Mar-10 14:26 
GeneralUnique Machine ID Pin
Anindya Chatterjee3-Mar-09 4:09
Anindya Chatterjee3-Mar-09 4:09 
AnswerMotherBoard Serial Number Pin
Ramy Rafik26-Jun-08 4:56
Ramy Rafik26-Jun-08 4:56 
GeneralRe: MotherBoard Serial Number Pin
#realJSOP17-Jul-08 1:32
mve#realJSOP17-Jul-08 1:32 
GeneralRe: MotherBoard Serial Number Pin
ChizI4-Nov-09 12:31
ChizI4-Nov-09 12:31 
GeneralNot really unique Pin
Ray Cassick11-Apr-06 16:24
Ray Cassick11-Apr-06 16:24 
GeneralRe: Not really unique Pin
Fabrice Vergnenegre11-Apr-06 21:53
Fabrice Vergnenegre11-Apr-06 21:53 
GeneralRe: Not really unique Pin
Gratemyl12-Apr-06 2:08
Gratemyl12-Apr-06 2:08 
GeneralRe: Not really unique Pin
Fabrice Vergnenegre12-Apr-06 9:55
Fabrice Vergnenegre12-Apr-06 9:55 
GeneralRe: Not really unique Pin
Gratemyl12-Apr-06 12:29
Gratemyl12-Apr-06 12:29 
GeneralRe: Not really unique Pin
Borv19-Oct-06 11:00
Borv19-Oct-06 11:00 
GeneralRe: Not really unique Pin
OneSoftware14-Apr-07 18:51
OneSoftware14-Apr-07 18:51 
GeneralRe: Not really unique Pin
OneSoftware23-Apr-07 19:49
OneSoftware23-Apr-07 19:49 
GeneralRe: Not really unique Pin
Ibrahim Dwaikat8-Oct-08 3:57
Ibrahim Dwaikat8-Oct-08 3:57 
GeneralRe: Not really unique Pin
Gratemyl12-Apr-06 2:07
Gratemyl12-Apr-06 2:07 
GeneralRe: Not really unique Pin
Gratemyl12-Apr-06 2:09
Gratemyl12-Apr-06 2:09 
AnswerRe: Not really unique Pin
Harkamal Singh23-Aug-07 1:46
Harkamal Singh23-Aug-07 1:46 
GeneralRe: Not really unique Pin
#realJSOP17-Jul-08 1:34
mve#realJSOP17-Jul-08 1:34 
GeneralRemovable Drives Pin
Felipe Amorim11-Apr-06 9:44
Felipe Amorim11-Apr-06 9:44 
GeneralRe: Removable Drives Pin
Gratemyl11-Apr-06 10:14
Gratemyl11-Apr-06 10:14 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.