Vous êtes sur la page 1sur 8

Application Trial Maker - CodeProject

9,231,365 members and growing! (53,087 online)

http://www.codeproject.com/Articles/15496/Application-Trial-Maker

Member 9089284

345

Sign out

Home

Articles

Quick Answers Help!

Discussions

Zones

Features

Community

Search site

Languages C# General

Application Trial Maker


By Hamed J.I | 17 Feb 2009 | Article

Licence First Posted Views Downloads Bookmarked

CPOL 6 Sep 2006 203,988 35,108 328 times

See Also
More like this More by this author

.NET2.0 VS2005 C#2.0 Windows Dev Intermediate

A library to easily create a trial version of your application


Article Browse Code Stats Revisions (4) Alternatives
4.65 (124 votes) 162

Download Download Download Download Download

source files - 72 Kb Example files - 70 Kb Serial Maker files - 46 Kb SerialBox Control files - 34 Kb FilterTextBox Control files - 19 Kb

Add your own alternative version

Introduction

It's very common to want a trial version of your application. For example, you need your application to only run for 30 days, or the user can only run your application 200 times. You can do this kind of task with this library. If someone wants to buy your application, he must call you and read his computer ID. Then you will use the Serial Maker to make a serial key

Related Articles

1 of 8

3.9.2012 13:29

Application Trial Maker - CodeProject

http://www.codeproject.com/Articles/15496/Application-Trial-Maker

(password). After entering the password, the application always runs as the full version. If the trial period is finished, reinstalling the application won't let user run it. The computer ID is a 25 character string that came from hardware information. Processor ID, main board manufacturer, VGA name, hard disk serial number, etc. You can choose what hardware items you want to use to make the computer ID. When you give the password to a customer, his password won't change until he changes his hardware.

Gradient Maker Application Implementing a Rudimentary Count Based Trial Version Plugin for Windows Applications. Tattoo Maker Gadget Maker IDE Morefast Doc-Comments Maker ConnectCode Software Box Shot Maker A simple backup maker for your programs' folders ThexCS - TTH (tiger tree hash) maker in C# Avoiding the Trials and Tribulations of CUDA Development on Windows WP7 Trial App Reinstall Problem NodeJS REST server trials to validate effective scripting CodeDOM Strong Type Collection Maker Automating Windows Applications Application Framework for Enterprise Applications Application Idle User-driven applications ScriptRunner Application EasyFtp 1.3.2 (for Applications) Use Rules In Your Applications Software Copy Protection for .Net Applications - a Tutorial

Computer ID
To make a Computer ID, you must indicate the name of your application. That's because if you have used Trial Maker to make a trial for more than one application, each application will have it's own Computer ID. In the source, Computer ID = "BaseString" Trial Maker uses management objects to get hardware information.

Serial
The password will be produced by changing the Computer ID. To make a password, you must have your own identifier. This identifier is a 3 character string. None of characters must be zero.

Files
There are two files to work with in this class. The first file is used to save computer information and remaining days of the trial period. This file must be in a secure place, and the user must not find it (RegFile). It's not a bad idea to save this file in application startup directory The second file will be used if the user registers the software. It will contain the serial that the user entered (HideFile). You can save HideFile in, for example, C:\Windows\system32\tmtst.dfg. I mean some obscure path. Both files will be encrypted using Triple DES algorithm. The key of encryption is custom. It's better you choose your own key for encryption.

How it works
Getting System Information SystemInfo class is for getting system information. It contains the GetSystemInfo function. This function takes the application name and
appends to it the Processor ID, main board product, etc.
Collapse | Copy Code

public static string GetSystemInfo(string SoftwareName) { if (UseProcessorID == true) SoftwareName += RunQuery("Processor", "ProcessorId"); if (UseBaseBoardProduct == true) SoftwareName += RunQuery("BaseBoard", "Product"); if (UseBaseBoardManufacturer == true) SoftwareName += RunQuery("BaseBoard", "Manufacturer"); // See more in source code

2 of 8

3.9.2012 13:29

Application Trial Maker - CodeProject

http://www.codeproject.com/Articles/15496/Application-Trial-Maker

SoftwareName = RemoveUseLess(SoftwareName); if (SoftwareName.Length < 25) return GetSystemInfo(SoftwareName); return SoftwareName.Substring(0, 25).ToUpper(); }

Then it removes unused characters from the string. Any characters outside the range A to Z and 0 to 9 are unused characters. If the string isn't long enough, call GetSystemInfoAgain to make it longer.

RunQuery function takes object name (TableName) and method name and returns defined method of first object
Collapse | Copy Code

private static string RunQuery(string TableName, string MethodName) { ManagementObjectSearcher MOS = new ManagementObjectSearcher("Select * from Win32_" + TableName); foreach (ManagementObject MO in MOS.Get()) { try { return MO[MethodName].ToString(); } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.Message); } } return ""; }

Once we have system information, we must make a Computer ID (BaseString) from it.

Making Computer ID (BaseString)


Collapse | Copy Code

private void MakeBaseString() { _BaseString = Encryption.Boring(Encryption.InverseByBase( SystemInfo.GetSystemInfo(_SoftName),10)); }

To make BaseString, first we get system information, and then use Encryption.InverseByBase and Encryption.Boring.

InverseByBase: Encryption.InverseByBase("ABCDEF",3) will


return CBAFED; it's so simple - it's inversing every 3 characters Boring: move every character in the string with the formula:
Collapse | Copy Code

NewPlace = (CurrentPlace * ASCII(character)) % string.length

Making Serial key (Password)


We use Encryption.MakePassword. this function takes BaseString and Identifier. It uses InverseByBase 3 times and Boring once, and then use ChangeChar function to change characters
Collapse | Copy Code

static public string MakePassword(string st, string Identifier) { if (Identifier.Length != 3) throw new ArgumentException("Identifier must be 3 character length"); int[] num = new int[3];

3 of 8

3.9.2012 13:29

Application Trial Maker - CodeProject

http://www.codeproject.com/Articles/15496/Application-Trial-Maker

num[0] = Convert.ToInt32(Identifier[0].ToString(), 10); num[1] = Convert.ToInt32(Identifier[1].ToString(), 10); num[2] = Convert.ToInt32(Identifier[2].ToString(), 10); st = Boring(st); st = InverseByBase(st, num[0]); st = InverseByBase(st, num[1]); st = InverseByBase(st, num[2]); StringBuilder SB = new StringBuilder(); foreach (char ch in st) { SB.Append(ChangeChar(ch, num)); } return SB.ToString(); }

Check Password
After making BaseString and password, check if the user already registered the software. To do this, use CheckRegister Function. It will return true if registered before and false if not. If CheckRegister returns false, open a registration dialog for the user to enter the password.

Show Dialog
Create new frmDialog and show it to the user. If the dialog result is OK, it means software is registered successfully, and if it is Retry, it means it is in trial mode. Any other DialogResult means cancel. The Dialog class takes BaseString, Password, days to end and Run times to end as arguments.

Reading And Writing Files


There's a class named FileReadWrite. This class reads / writes files with Triple DES encryption algorithm.

FileReadWrite.WriteFile take a 2 strings. The first one is the file


path and the second one is the data to write. After writing all data it write byte 0 as finish. It will use for reading
Collapse | Copy Code

public static void WriteFile(string FilePath, string Data) { FileStream fout = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.Write); TripleDES tdes = new TripleDESCryptoServiceProvider(); CryptoStream cs = new CryptoStream(fout, tdes.CreateEncryptor(key, iv), CryptoStreamMode.Write); byte[] d = Encoding.ASCII.GetBytes(Data); cs.Write(d, 0, d.Length); cs.WriteByte(0); cs.Close(); fout.Close(); }

The key for writing and reading is the same one, it's custom and you can change it.

How To Use
Where to use
The best place that you can check for registration is before showing the main dialog. When you have created a Windows application project, first you must add SoftwareLocker.dll as reference Then in program.cs, find the main function. I think it's the best place for

4 of 8

3.9.2012 13:29

Application Trial Maker - CodeProject

http://www.codeproject.com/Articles/15496/Application-Trial-Maker

checking registration. You can check registration when your main dialog loads, but before loading is better.

Change Main Dialog


It's better to add one argument to your main dialog constructor. A Boolean value that indicates that this is a trial or a full version running. If it's a trial mode, disable some parts of your application as needed.

How to change main()


Add namespace
Collapse | Copy Code

using SoftwareLocker;
Collapse | Copy Code

[STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); TrialMaker t = new TrialMaker("TMTest1", Application.StartupPath + "\\RegFile.reg", Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\TMSetp.dbf", "Phone: +98 21 88281536\nMobile: +98 912 2881860", 5, 10, "745"); byte[] MyOwnKey = { 97, 250, 1, 5, 84, 21, 7, 63, 4, 54, 87, 56, 123, 10, 3, 62, 7, 9, 20, 36, 37, 21, 101, 57}; t.TripleDESKey = MyOwnKey; // if you don't call this part the program will //use default key to encryption TrialMaker.RunTypes RT = t.ShowDialog(); bool is_trial; if (RT != TrialMaker.RunTypes.Expired) { if (RT == TrialMaker.RunTypes.Full) is_trial = false; else is_trial = true; Application.Run(new Form1(is_trial)); } }

Don't move first two lines, after them, define TrialMaker class Constructor

SoftwareName: Your software's name, this will be used to make


ComputerID

RegFilePath: The file path that, if the user entered the


registration code, will save it and check on every run. HiddenFilePath: This file will be used to save system information, days to finish trial mode, how many other times user can run application and current date. Text: It will show below the OK button on the Registration Dialog. Use this text for your phone number, etc. DefaultDays: How many days the user can run in trial mode. DefaultTimes: How many times user can run the application. Identifier: Three character string for making password. It's the password making identifier Optional and recommended In the constructor, you can change the default Triple DES key. It's a 24 byte key, and then you can customize Management Objects used to

5 of 8

3.9.2012 13:29

Application Trial Maker - CodeProject

http://www.codeproject.com/Articles/15496/Application-Trial-Maker

make the Computer ID (BaseString):


Collapse | Copy Code

t.UseBiosVersion = false // = true;

You can do this with any t.UseXxx Don't disable all of them or none of them, enabling 3 or 4 of them is the best choice. Or you can leave it as its default.

Serial Maker
Serial maker is another application that uses the Encryption class. It takes your identifier and generate a password (serial key) Doesn't contain anything special.

Other Controls
In the registration dialog, I have used a SerialBox control. It's only 5 text boxes that you can write your serial in.

SerialBox uses FilterTextBox itself.


Both of these controls are available to download.

Notes
All codes are written in Visual Studio 2005 Serial Maker uses Encryption class from Trial Maker as a file link Writing with one encryption key and reading with another will cause an exception FilterTextBox Control is not the same that I wrote before in my articles Always Secure your identifiers and don't lose them

License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author


Hamed J.I I began programming with C/C++ when i was 15. Then try to learn VC++ but at the middle of my reading .NET came. I began to read C# and VB.NET and also began designing basic websites by FrontPage and developed some websites for our school and some other companis. Later learn Microcontroller and design some digital circuits with PIC microcontrollers for a industrial controller company. As I learned SQL and ASP.NET developed some website such as news portals that are active now. Now i'm a software student and teach programming in computer institues. And have my own job by getting projects from companies. Article Top
Rate this: Poor Excellent Vot e

Web Developer Of) Iran (Islamic Republic

Member

6 of 8

3.9.2012 13:29

Application Trial Maker - CodeProject

http://www.codeproject.com/Articles/15496/Application-Trial-Maker

Comments and Discussions

Add a Comment or Question Search this forum Profile popups Noise


Medium

Go
Normal

Layout

Per page

25

U pdat e Refresh My vote of 5 this is not working in vs2008 Access to the path 'C:\Windows\system32 \TMSetp.dbf' is denied. But not security Re: But not security Serial Maker not working..( Visual Studio 2010 ) Can Anyone Translate it? Error while running path Re: Error while running path Re: Error while running path Nice piece of work how to change trail duration change trail period...? My vote of 2 how to identify in sebBaseString TrialMakker? how to renew thanks , but .... Re: thanks , but .... My vote of 5 pLEASE eXPLAIN My vote of 5 My vote of 2 thank you thank you thanks Last Visit: 5:18 3 Sep '12 General Joke Rant News Admin IMRAN SHAFQA richa arora14 richa arora14 nguyenanh260 Xaltus Agit yldz ASHISH' PORWAL satish1nov Dau Le Trung nilesh_13490 geekbond Member 8233601 balagp barbodsoft rengaraj123 Member 7964596 nassimnastaran fagot_t manoj kumar choubey dipan chikani harath randika Sakthi Manoj R amertarekt djramc mahmoud mansourinejad Last Update: 2:28 3 Sep '12 Suggestion Question Bug First Prev Next 2:57 1 Sep '12 9:30 21 Aug '12 5:38 20 Aug '12

20:53 31 Jul '12 10:14 8 Aug '12 14:14 31 Jul '12 4:31 1 Jul '12 11:36 5 Jun '12 17:49 23 Jun '12 7:55 16 Aug '12 4:50 25 May '12 2:26 8 May '12 22:36 3 May '12 6:27 3 May '12 14:26 2 Apr '12

3:15 1 Mar '12 14:50 29 Feb '12 9:03 2 Mar '12 5:31 22 Feb '12 9:27 17 Jan '12 4:13 17 Jan '12 7:04 29 Dec '11 1:34 13 Dec '11 9:14 26 Nov '11 15:47 2 Nov '11 1 2 3 4 5 6 7 Next Answer

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.
Permalink | Advertise | Privacy | Mobile Layout: Web02 | 2.5.120830.1 | Last Updated 17 Feb 2009fixed | fluid

Article Copyright 2006 by Hamed J.I

7 of 8

3.9.2012 13:29

Application Trial Maker - CodeProject

http://www.codeproject.com/Articles/15496/Application-Trial-Maker

Everything else Copyright CodeProject, 1999-2012 Terms of Use

8 of 8

3.9.2012 13:29

Vous aimerez peut-être aussi