|
-
Sep 11th, 2000, 10:51 AM
#1
Thread Starter
Lively Member
Hi, i'm trying to distribute this program that i wrote but i want to make sure that the person who bought it from me will not be able to copy the program and distribute to others. So essentially the copy which he has sould work only on his computer.
I'm not sure how to do this but is it possible to get the identity of the computer(like the computer's name) the first time it's run and then the next time it's run the program could look for that identification or else it won't run. PLEASE HELP ME QUICKLY BEFORE MY CUSTOMERS GET IMPATIENT AND GO AWAY.
-
Sep 11th, 2000, 12:17 PM
#2
Hyperactive Member
I just thought I should remind you that if one of your customer wants to use the program on another computer - he should be able to. Be careful with this.
I have a similar problem. But since my users will go to my ftp to frequently update the application, I will be able to retrace who has an illegal copy. But this doesn't avoid piracy.
On the other hand, developpers from huge game companies, and this might include Microsoft, havn't figured out how to do this since many people will copy their games.
Since your first post, have you come up with any idea/solution?
-
Sep 11th, 2000, 12:18 PM
#3
Hyperactive Member
Hi
How would it know not to install itself "the first time" on some other computer? Unless the program self destructs after the initial install, then there is no way (This would suck if the user got a new computer). Another way might be to force an online registration to "Activate" the program and get the machine name voluntarily or snatch it in a program somehow then dynamically write a download which the program checks to match the machinename. This approach might not be legal though? If the user gets a new machine he's screwed to prove he is who he says he is.To go through all the hassle I would think this better be one killer app.
The only real dependable way is to get a retina scanner and make the user look into a peep hole before using this app while sitting on a special chair that records weight and variations along with a finger print and throw in some face recognition software too. This might last about a month before hackers start distributing your software without so much as a password.
-
Sep 11th, 2000, 12:25 PM
#4
Hyperactive Member
To answer your question:
I'm not sure how to do this but is it possible to get the identity of the computer(like the computer's name) the first time it's run and then the next time it's run the program could look for that identification or else it won't run
You can easily do that by retrieving any relevant information like the computer's name and then store it in the registry, encrypted file or anyhow. But I guess that would be done on the first run or first install - which won't avoid copying your application and using it on another computer.
-
Sep 11th, 2000, 01:09 PM
#5
New Member
Is the program running on a Network, or are they all stand alone? If they are running on a network, you can make the program place a file on a network drive if it is running with the name of the computer it was initially installed on, and if the computer name doesn not match then it won't run. That sounds kinda hokey to me...
Are you selling them a program, or a license to use your program?
If you are really worried about it, make a registration file that you send them, that sits in the app path, with the computer name, and information that makes it unique, so if they install on a new computer they will have to ask you for this file.
-
Sep 11th, 2000, 01:15 PM
#6
Lively Member
Use [User].pwl
Every use has a pwl (Pass Word List) file.
Remember though if someone makes the same user on another comp the program will fun.
The PWL files are located in C:\Windows\
Ex. Username: BGates
File: C:\Windows\BGates.pwl
I hope this helps DEWD
-Justin :>
-
Sep 11th, 2000, 03:37 PM
#7
Frenzied Member
I think you will need the ability to connect to a database on a "third party" source, such as an internet site. Also, each program application will need it's own unique code to identify itself (built in BEFORE compiling) and each user's machine will need a unique code as well.
Upon the initial run of the program, the application will check your database for a record that contains it's ID. If a record is found, then it will compare the user ID in the database to that of the machine it's running on (you could write this id to the registry). If the id's match, then both the machine is qualified to run the particular installation of your app. If they don't, then the app shuts down. If there is no record, then the application hasn't been run yet, so you add a record to the database with the app's ID and the user's ID, and continue running. The next time the app is run, it will find the record that was written on it's initial activation.
Unfortunately, you need a third party place to store all this information, because storing on the user's machine allows it to be installed anywhere (it will always write an initial record for itself and the user), and there is now way for a program to add information to itself after it's compiled (i.e. setting the machine's id inside the source code).
One more note: what you are proposing would be considered by many to be bad programming practice. Users should be able to install your software on multiple machines if it is for their own use. Personally I would hate it if I couldn't have my games installed both at home and at work 
good luck,
~seaweed
-
Sep 11th, 2000, 03:38 PM
#8
I don't think all user names are the same, so you could check to see if it's a certain username and if it isn't than end the program.
Code:
Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
Public Function UserName() As String
Dim llReturn As Long
Dim lsUserName As String
Dim lsBuffer As String
lsUserName = ""
lsBuffer = Space$(255)
llReturn = GetUserName(lsBuffer, 255)
If llReturn Then
lsUserName = Left$(lsBuffer, InStr(lsBuffer, Chr(0)) - 1)
End If
UserName = lsUserName
End Function
Usage:
Private Sub Form_Load()
strName = UserName()
If strName = "Matthew Gates" Then
Msgbox "You are free to enter :D."
Else
Msgbox "You are not mature enough for this program. ;)"
Unload Me
End
End If
End Sub
-
Sep 11th, 2000, 09:12 PM
#9
Thread Starter
Lively Member
Krass how would you go about placing the username in the registry, only the first time. Can you place post your code?
-
Sep 11th, 2000, 09:21 PM
#10
Thread Starter
Lively Member
One more thing, the program which i'm distributing is only to school boys and a few of my friends. OK, so according to Matthew Gates' reply i should already know the username of the computer of the user. is it possible to send a program using the activeX Control instead of the standard exe through mail to the user so when the user opens, runs, or replies to the program/mail, the program should send a mail back to me telling me the username of the computer where i sent the mail. IS THAT POSSIBLE????????? HELP NEEDED SOON
-
Sep 11th, 2000, 10:35 PM
#11
Addicted Member
i know HOW
look:
you give a version of your program whit a sub program..
this sub program open the first time and check the computer
serail number... crypt the number and give you a serial number code...
after that, the program shell the REAL program,
and the REAL program delete the SUB program..
so, it's now impossible to get a new serial number for an other computer
BUT the person can copy the SUB program before..
So, this method is only good if you sell the program to one or 2 people..
-
Sep 11th, 2000, 10:52 PM
#12
Use MAPI Controls to send email. If you need examples, go to http://www.planet-source-code.com and type in "MAPI".
-
Sep 11th, 2000, 10:58 PM
#13
Hyperactive Member
My Solution
Which in part came from this very forum's archives some months back.
As a user I would hate to have to register an app I purchased just to unlock functionality. Yet this is what I have done. Mind you, this app is for a small vertical market so it's not likely that anyone will bother distributing registration codes and so on.
On to your question about uniquely identifying a computer. Short answer is: no foolproof way to do it. However, the following idea works for me and I belive it to be a fair compromise all around.
The uniqueID of the computer that I use is the serial number of the hard disk that is known as "C:\". If the user doesn't have a c:\ then my app will not work for them. If the user ghosts their harddrive, then they will be able to run my app on more than one machine. If the user updates his computer or reformats his hard drive, then he can email me with his codeword and the new serial number and I email him back a replacement authorisation key. In other words, I trust my users - there really is no other choice at all.
This works for me because:
Most users that use the app have a c: drive
Most users that use the app do not reformat their c: drive
Most users that use the app don't have a clue how to hack
One way I see that you could use the HDD serial number to identify licensed machines is to require the user to fill in a form (on-line or in your app like mine) in which they must enter the details of the product/their details etc and the serial number of the HDD is built in to the form.
So once you recieve the request, you generate a special string containing all of their license data which requires the hdd serial number to decode properly.
Biggest drawback is that your decryption algorithm is built into your app so hackers will find it easy to crack. Having said that, if your app is interesting to hackers, I truly doubt you can stop them...
Probably more confusion for you to deal with but maybe it will help someone else one day 
Cheers
Paul Lewis
-
Sep 12th, 2000, 12:40 AM
#14
Hyperactive Member
Originally posted by royjacob
Krass how would you go about placing the username in the registry, only the first time. Can you place post your code?
Here is the code:
dim MachineName as string
SaveSetting "AnApplication", "GeneralInfo", "MachineName", MachineName
If you have any problems, email me.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|