Thanks for your help, I appreciate it. My problem is slightly different. I've already handled the normally licensed code, I just need a way to make the program work when I license violation DOES occur OR when licensing has not been set up just yet.
My "normal" system works by storing a hardware-based key + info on licensed applications in plain view for everyone to see. Those it's obviously encrypted so no one can tamper with it. When the program starts and there is a license violation of any kind (no license file, corrupted license file, wrong hard key, expired license) the program will pop a box and ask for an activation code. This code will be provided by phone so it's fairly safe. This is the point the problems shows it's ugly head: We're not open 24/7 and our customers might need an activation code when there's no one in the office to provide one. We might be ourselves at a customer site doing a installation when there's no one in the office and we might be staring at the screen, unable to generate a license code! To handle all those situations we want the ability to run the program without a valid license for a few days. Doing this for a "few days" requires some kind of hidden storage for the number of days and other related information. This is the problem I'm asking about: How do I store the "expiry date" somewhere so the program will run for a while. So thanks for everyone who answered I decided to go with the following formula: 1) A DLL in both my "shared" folder and in my application's folder containing info about the expiry date. This will not be a config file with a DLL extension; it will be a real DLL that I will load using LoadLibrary etc. 2) The DLL will contain an entry for the checksum so it can be self-signed. This way I'll be able to detect changing of the DLL without using an extra record for the checksum somewhere. > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On > Behalf Of Jeff Young > Sent: Thursday, March 30, 2006 5:22 AM > To: 'Borland's Delphi Discussion List' > Subject: RE: LITE security / licensing aid > > Cosmin, > I'm going to throw my .02 in on this one. I designed a multi use > security system using ASProtect and a custom component I created. It > enabled > the key to store multiple lines of options and data. Something to the > effect > of... > > User Name > 2 //Number of Users allowed > Pro //Mode to run in. > 127.0.0.1 > > Basically, this data was encrypted with ASProtect and stored in a simple > text file. On run ASProtect would decrypt the data and the custom > component > would decide which options to turn on in the program. Without the file > present the program wouldn't run. If the IP of the machine wasn't in the > decrypted file, it wouldn't run. (This was a server based internet only > app) > Etc... > > If the user needed a new key file, they had to contact us. > > An addition that was never used was a date downloaded/date to expire > entry. > > If this sounds like something you would be interested in, I could remove > the > company specific info and send it to you. You would need a copy of > ASProtect > to make it work though. > > HTH, > > Jeff Young > [EMAIL PROTECTED] > > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On > Behalf > Of Cosmin Prund > Sent: Friday, March 24, 2006 1:43 PM > To: Moderated discussion list about programming with Borland's Delphi > Subject: LITE security / licensing aid > > Hello everyone! > > I'm working on securing some of my applications right now. I've managed to > get "on/off" security working (ie: you're ether licensed or you're not > licensed) but now I'd like to add a few tones of "gray". Essentially I'd > like to add the ability to delay activating the product for a while. This > requires some storage for number of "runs" or "expiry date". > > I KNOW there's no real way of securing any piece of data on a client's > system but I'm not really facing real crackers so a "so/so" solution would > work. The thing I'm mostly afraid is the situation where someone would > stumble across my "data" and simply delete it! That would make my > application think it was freshly installed and provide the client with a > fresh "free" period! That's not good. > > I mostly think I know the solution: I just need to write the same data > into > multiple places so the user would not find them all. But then comes the > question: Where exactly do I write this data so the user would NOT > consider > I'm invading his space? > > I'm considering: > > 1) My "Program Files" folder. This is very obvious and the user is likely > to > find it. > 2) The "Application Data" folder for the current user. This doesn't exist > on > Win9X machines! > 3) My registry key (under the HKCU\Software\MyCompany key). This would be > easy to spot too. > 4) Some other, better, yet polite hiding place :) > > Anyone been here before? > Anyone has other good ideas? > > Thanks for your input! > Cosmin Prund > > > _______________________________________________ > Delphi mailing list -> [email protected] > http://www.elists.org/mailman/listinfo/delphi > > _______________________________________________ > Delphi mailing list -> [email protected] > http://www.elists.org/mailman/listinfo/delphi _______________________________________________ Delphi mailing list -> [email protected] http://www.elists.org/mailman/listinfo/delphi

