Registration systems

Started by
4 comments, last by jtech 22 years, 8 months ago
How would I, as a programmer, go about designing a registration system for my software? In other words, that part where the user enters a registration code into a dialog box to fully enable all features of your program. BTW, this is not necessarily for a game. I would rather learn to program this myself, rather than using somebody else''s software registration system. I would like to understand how to keep track of licenses, to add them, remove them, without affecting old or new users, what works best, what doesn''t, etc... I am not particularly interested in strong protection techniques, only how to design the complete system.
Advertisement
Well, you could instance different objects if the correct key is typed in, or have a (Un)Cripple() methods that are called to (un)lock the functionality.

Magmai Kai Holmlor
- Not For Rent
- The trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted.-- Tajima & Matsubara
Aside from creating an algorithm to test for valid registration codes,
what other details are there when designing a registration system?

Has anyone out there created a shareware program with something like
this? Can anyone share their experiences?
I''m not sure how this really applies to this forum, specifically. But anyway... the main problem with registration, beyond the valid code generation system, is preventing crackers from bypassing it. Obviously storing a boolean variable somewhere saying "registered" or "not registered" is not going to suffice, because a cracker can easily change the code check that reads the variable. You have to find more complex ways of achieving this.
This is an excellent example for Software Engineering. If you had written the whole program not thinking about a share/cripple-ware version, it could require significant rework to make one program that can be unlocked. If you think through the consequences of crippleware ahead of time it should be much clearer and easier to code.

I''ve never made a crippleware program though, so I don''t have any solid experience to give advice from. I can think of two ways to do it: Each object that you want to limit needs a way (method) to turn on & off it''s crippled features. Or you make wrapper objects that intercept the crippled method; ala decorator pattern.

Magmai Kai Holmlor
- Not For Rent
- The trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted.-- Tajima & Matsubara
I've seen an article or two on this subject floating around the web, I'll see if I can dig up the links...

I found one on flipCode that covers this, read it and all the responses to it too, it's interesting.

There was one in Game Developer magazine a few issues ago too, but it doesn't seem to have made it on to GamaSutra. But at least look over the article on flipCode.

Anthracks

Edit: I screwed up my stupid HTML...

Edited by - Anthracks on August 11, 2001 1:39:46 PM

This topic is closed to new replies.

Advertisement