|
There are many tools available in the market which u could use to protect ur software against the piracy.
If you want to develop your own algorithm then follow following steps
1. Fetch Unique identifier for the system (Hard Disk id, cpu id, Network card number etc)
2. store this uid on the same computer (dont forget to encrypt it)
3. check the stored value every time at the startup of your software
There could be many variations for this process depending upon the type of licensing that you want to implement e.g. fixed, time based, license on activation.
Hope this will help you start going
Happy Coding
|
|
|
|
|
Amardeep Deshmukh wrote: If you want to develop your own algorithm then follow following steps 1.
Fetch Unique identifier for the system (Hard Disk id, cpu id, Network card
number etc) 2. store this uid on the same computer (dont forget to encrypt
it) 3. check the stored value every time at the startup of your software
This 'solution' accomplishes nothing....
the user takes the DVD, installs it on a new PC, then steps 1-3 are run again.
Voila - a new unauthorized copy.
If it's not broken, fix it until it is
|
|
|
|
|
Kevin,
before replying or voting you should read the comments properly!!!
I said it will start him going....
In last paragraph I did mention that there could be multiple ways of implementing it...
in your below solution as well there is one drawback...User has have a internet connectivity...So are you saying to use this software, you must have a internet access??
In that case why not to develop it as hosted site instead of as a stand alone application?
you will have control over it by providing user level access
Whats say?
Happy Coding

|
|
|
|
|
The only real way to do this is on installation send some unique PC info to your server. Then each time that copy of the software is started, compare it against what's on your sever.
If that copu is being used in more than one place, it's a pirated copy.
The only fly in the ointment is you have to build in some way for the user to move the software to a new PC. An "unregister" function of some sort.
If it's not broken, fix it until it is
|
|
|
|
|
Well,
most of your steps are correct except validating the copy with the value stored on the server.
Instead of that, following steps could be used
1.At the first launch of the application, present user an activation form
2.Provide "Request" button to send the information to some email id
3.Clicking on the button fetch the UID of the system and send these details to server
4.Also, application should write some file say "app.lic" on the machine with identifier indicating the state as requested and the UID related details
5. Write some procedure at your end "Application License Provider"
6. Generate the activation and send to user
7. At user side read the activation key, validate the "app.lic" and if the identifier from both matches activate the license.
Advantages:
1. No internet connectivity required (except for the activation)
2. good for implementing the time based licensing.
Disadvantages:
1. Reformatting or replacing the hardware used as UID leads to invalid license.
2. Not good for life time licensing.
Depending on the requirement algorithm or approach could change.Every approach has its advantages and disadvantages. So, have good thoughts upfront before implementing the copy protection for your application.
Happy Coding

|
|
|
|
|
If you're going with the web-connected stuff anyway, you could go one step further and mode a vital piece of code to the server. Pirates are going to have a pretty bad time with that.
|
|
|
|
|
Check this out. www.cybersurelock.net. Let me know what you think.
|
|
|
|
|
Is ther any component or OCX which we can use it to
generate and print a barcode? when we use the one
printer's facility, it doesn't work correctly for other printers. I want also to know is there a
general software for this purpose? thanks
|
|
|
|
|
Try this font[^].
Bastard Programmer from Hell
|
|
|
|
|
thanks I took a look at that link. I think it may work, but as I understand it can generate only
one format (Code 39). thus user cant select his own
standard. but it will give me good idea.
|
|
|
|
|
There are more barcode-fonts out there, for different formats - just don't forget to add any checksums, if required for that particular format
Bastard Programmer from Hell
|
|
|
|
|
Take a look at some of the results here[^].
When I needed a simple Code128 barcode generator for a site I was working on, I found the base code in one of these articles. It took less than 1 day to adapt the code to my purpose, so it was a very good base.
The specific article I used is this one: GenCode128 - A Code128 Barcode Generator[^] (Edit: I know this is an older article, but it converted very easily to dotnet 4 for me)
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
Thanks, but I didn't need barcode generator, the thing that I need is a program (for example an ActiveX or DLL) which I be able to use them in my own
project. I will search more carefully through the
second link which u sent. 
|
|
|
|
|
|
how do i use pdfbox in c#??
|
|
|
|
|
|
In a function, I want to catch all exceptions and just log them (they do not really matter), but one specific type of exception must not be handled like this - it must be dealt with in a function farther up the call stack.
Currently, I do something like this:
private void SomeFunction()
{
try
{
}
catch(UserTriedToCheatException)
{
throw;
}
catch (Exception ex)
{
Log(ex.ToString());
}
}
Though that code works as expected, I am not content with it. That catch-throw looks so terrible.
Do you have "nicer" suggestions?
|
|
|
|
|
Exceptions don't really matter? Hm ...
I don't find your construct too bad but the alternative which expresses your intent (imo) slightly better is:
try {
} catch(Exception ex) {
if(ex is UserTriedToCheatException) throw;
else Log(ex);
}
|
|
|
|
|
Looks different, but not so much better that I will change my code. Thanks anyway.
|
|
|
|
|
OK, but leave out the else - it's extraneous.
/ravi
|
|
|
|
|
If you're just logging the exception, why do you need an exception handler here at all? Just use the one 'further up the callstack'.
Regards,
Rob Philpott.
|
|
|
|
|
Because of other code to be executed or not. Something like this:
public ReturnType APublicFunction(some params)
{
try
{
SomeType someValue = aPrivateFunction(other params);
}
catch(Exception ex)
{
}
}
private SomeType aPrivateFunction(other params)
{
SomeFunction();
}
In case of the UserTriedToCheatException, it has to be handled in APublicFunction, and no more other code needs to be executed, while in other cases, the exceptions are not such important, the rest of the functions can still be executed (sufficient fallback functionality provided).
|
|
|
|
|
How about something similar to the way TryParse[^] works?
if (SomePrivateFunction(out SomeType SomeParamName))
{
}
Bastard Programmer from Hell
|
|
|
|
|
you can always invoking a Delegate, which will call the registered private method
Satish
|
|
|
|
|
Bernhard Hiller wrote: That catch-throw looks so terrible.
In my opinion, it won't look so terrible with some good comments around it!
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|