p*****u 发帖数: 310 | 1 【 以下文字转载自 Seattle 讨论区 】
发信人: pippylu (pippylu), 信区: Seattle
标 题: 请教如何给软件加个license
发信站: BBS 未名空间站 (Thu Aug 18 17:37:32 2011, 美东)
朋友写了个windows上的软件。他想加license信息,就是没注册显示是demo版,某年某
日过期。然后可以向他要注册码。他根据用户信息生成一个注册码发给用户,用户就可
以继续使用了。总之这种standard的要求。说来惭愧,我虽说自己也是搞计算机的,原
理也明白,就是不会,汇编早还给老师了。请各位高手指点赐教。站内联系也行。 | d******o 发帖数: 2489 | 2 很多方法吧,从registry、系统文件里边,不过都会被破解。
如果你用C#,试一下:
// adding trial period for the application
// set for 30 days on initial launch
Option Explicit
Private Const TRIAL_PERIOD_DAYS As Integer = 30
Private Function TrialPeriodDaysLeft(DaysTrial As Integer) As Integer
Dim DateStart As Date
DateStart = GetSetting(App.Title, "Trial Period", "Date Start", 0)
If DateStart = 0 Then
SaveSetting App.Title, "Trial Period", "Date Start", Date
Else
TrialPeriodDaysLeft = DateDiff("d", DateStart, Date) > DaysTrial
End If
End Function
Private Sub AppSetRegistered(Registered As Boolean)
SaveSetting App.Title, "Trial Period", "Registered", Registered
End Sub
Private Function AppRegistered() As Boolean
AppRegistered = GetSetting(App.Title, "Trial Period", "Registered", False)
End Function
Private Sub Form_Load()
If Not AppRegistered Then
Dim DaysLeft As Integer
DaysLeft = TrialPeriodDaysLeft(TRIAL_PERIOD_DAYS)
If DaysLeft < 0 Then
If MsgBox("The trial period for " & App.Title & " has expired." &
vbCrLf & _
"Would you like to register to continue using this program?",
vbQuestion + vbYesNo) = vbYes Then
' Open up order form here
' Use: 'AppSetRegistered True' to register program
Else
' Exit your program here
End If
Else
MsgBox "You have " & DaysLeft & " " & IIf(DaysLeft = 1, "day left", "
days left") & " to use this program.", vbInformation
End If
End If
End Sub
【在 p*****u 的大作中提到】 : 【 以下文字转载自 Seattle 讨论区 】 : 发信人: pippylu (pippylu), 信区: Seattle : 标 题: 请教如何给软件加个license : 发信站: BBS 未名空间站 (Thu Aug 18 17:37:32 2011, 美东) : 朋友写了个windows上的软件。他想加license信息,就是没注册显示是demo版,某年某 : 日过期。然后可以向他要注册码。他根据用户信息生成一个注册码发给用户,用户就可 : 以继续使用了。总之这种standard的要求。说来惭愧,我虽说自己也是搞计算机的,原 : 理也明白,就是不会,汇编早还给老师了。请各位高手指点赐教。站内联系也行。
| f*******d 发帖数: 12693 | 3 vb啊。
这个不灵,如果懂一点软件的,跟踪注册表一看就看出来了。
【在 d******o 的大作中提到】 : 很多方法吧,从registry、系统文件里边,不过都会被破解。 : 如果你用C#,试一下: : // adding trial period for the application : // set for 30 days on initial launch : Option Explicit : Private Const TRIAL_PERIOD_DAYS As Integer = 30 : Private Function TrialPeriodDaysLeft(DaysTrial As Integer) As Integer : Dim DateStart As Date : DateStart = GetSetting(App.Title, "Trial Period", "Date Start", 0) : If DateStart = 0 Then
| d******o 发帖数: 2489 | 4 or
public string Read(string KeyName)
{
// Opening the registry key
RegistryKey rk = baseRegistryKey ;
// Open a subKey as read-only
RegistryKey sk1 = rk.OpenSubKey(subKey);
// If the RegistrySubKey doesn't exist -> (null)
if ( sk1 == null )
{
return null;
}
else
{
try
{
// If the RegistryKey exists I get its value
// or null is returned.
return (string)sk1.GetValue(KeyName.ToUpper());
}
//自己加 exception handling
....
public bool Write(string KeyName, object Value)
{
try
{
// Setting
RegistryKey rk = baseRegistryKey ;
// I have to use CreateSubKey
// (create or open it if already exits),
// 'cause OpenSubKey open a subKey as read-only
RegistryKey sk1 = rk.CreateSubKey(subKey);
// Save the value
sk1.SetValue(KeyName.ToUpper(), Value);
return true;
}
//自己补exeption handling
这些client based方法都不太可靠
【在 p*****u 的大作中提到】 : 【 以下文字转载自 Seattle 讨论区 】 : 发信人: pippylu (pippylu), 信区: Seattle : 标 题: 请教如何给软件加个license : 发信站: BBS 未名空间站 (Thu Aug 18 17:37:32 2011, 美东) : 朋友写了个windows上的软件。他想加license信息,就是没注册显示是demo版,某年某 : 日过期。然后可以向他要注册码。他根据用户信息生成一个注册码发给用户,用户就可 : 以继续使用了。总之这种standard的要求。说来惭愧,我虽说自己也是搞计算机的,原 : 理也明白,就是不会,汇编早还给老师了。请各位高手指点赐教。站内联系也行。
| b******d 发帖数: 2495 | 5 我懂一点软件,但是不会跟踪这个啊。
【在 f*******d 的大作中提到】 : vb啊。 : 这个不灵,如果懂一点软件的,跟踪注册表一看就看出来了。
| d******o 发帖数: 2489 | 6 所以我说不可靠啊,都只能做到一定程度。
【在 b******d 的大作中提到】 : 我懂一点软件,但是不会跟踪这个啊。
| p*****u 发帖数: 310 | | o****e 发帖数: 916 | 8 弄个网上注册,public/private key 加机器特征码(比如主板bios,cpu id)可行么
? | p*****u 发帖数: 310 | 9 请问具体如何操作?现有的可执行文件是没锁的,如何加锁呢?我的理解是必须在某处
转移到license的程序段。可这某处好像要用反汇编才能找到合适的吧?
【在 o****e 的大作中提到】 : 弄个网上注册,public/private key 加机器特征码(比如主板bios,cpu id)可行么 : ?
| p*****u 发帖数: 310 | |
|