PDA

View Full Version : برنامه trial



arsalansalar
دوشنبه 03 دی 1386, 19:17 عصر
سلام
نحوه نوشتن برنامه trial به چه صورت است؟
یعنی مثلا برنامه بعد از 10 روز به جای اجرا یک پیغام دهد.

sinpin
سه شنبه 04 دی 1386, 09:07 صبح
سلام
نحوه نوشتن برنامه trial به چه صورت است؟
یعنی مثلا برنامه بعد از 10 روز به جای اجرا یک پیغام دهد.

اگرچه این روشها یه جورایی منسوخ شده (بدلیل عدم امنیت) اما چون پرسیده بودید :
زمان اولین اجرای برنامه (یا نصب اون رو) رو در جایی بصورت کد شده (که کسی نتونه از منطق اون سر دریباره) ذخیره کنید‌(مثلا رجیستری یا پوشه ویندوز یا ...) بعد هربار موقع اجرای برنامه چک کنید که اختلاف امروز با اون مقدار کمتر از 10 باشه و گرنه...

arsalansalar
سه شنبه 04 دی 1386, 09:24 صبح
دوست عزیز از راهنماییت ممنون.
من منطق کار را میدانستم ولی بلد نیستم چگونه این کار را انجام دهم.
اگر زحمتی نیست یک مثال کوچک می زنید؟

reza_rad
سه شنبه 04 دی 1386, 09:46 صبح
من منطق کار را میدانستم ولی بلد نیستم چگونه این کار را انجام دهم.
اگر زحمتی نیست یک مثال کوچک می زنید؟

How to read and write System Registry Keys using C# (VS.Net 2005) (http://www.c-sharpcorner.com/UploadFile/sushmita_kumari/RegistryKeys102082006061720AM/RegistryKeys1.aspx?ArticleID=0ce07333-c9ab-4a6a-bc5d-44ea2523e232)

ir_programmer
سه شنبه 04 دی 1386, 10:55 صبح
این روش رو استفاده کن :


Public Sub testreg()
Dim objKey As Microsoft.Win32.RegistryKey
Dim objsubkey As Microsoft.Win32.RegistryKey
If Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\TestAPP", True) Is Nothing Then
objKey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey ("SOFTWARE\Testapp")
objKey.SetValue("Date", System.DateTime.Now.DayOfYear.ToString)
objKey.Close()
Else
objKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\TestAPP", False)
If objKey.GetValue("Date") < gettime() Then
Dim result As String = gettime() - objKey.GetValue("Date")
If result < 30 Then
MsgBox("You have used " & result & " days of your trial")
objKey.Close()
Exit Sub
ElseIf result = 30 Then
MsgBox("This is the last day of your trial. This program will cease to works as of tomorrow.")
objKey.Close()
Exit Sub
ElseIf result > 30 Then
MsgBox("Your trial has expired. This program will now exit.")
objKey.Close()
Application.Exit()
'Else : Me.MenuItem1.Enabled = False
End If
End If
End If
End Sub

ir_programmer
سه شنبه 04 دی 1386, 11:03 صبح
رمز نگاری تاریخ که در رجیستر میخای ثبت کنی رو هم قبلا گفتم:
طرز استفاده:

Private Function EncryptStr(ByVal InputStr As String) As String


Dim KeyWord As String = "ir_programmer"

Crypto.Encoding = Crypto.EncodingType.HEX
Crypto.EncryptionAlgorithm = Crypto.Algorithm.RSA
Crypto.Key = KeyWord

If Crypto.EncryptString(InputStr) Then
Return Crypto.Content
Else
Return Crypto.CryptoException.Message
End If

End Function

Private Function DecryptStr(ByVal InputStr As String) As String

Dim keyWord As String = "ir_programmer"

Crypto.Encoding = Crypto.EncodingType.HEX
Crypto.EncryptionAlgorithm = Crypto.Algorithm.RSA
Crypto.Key = keyWord
Crypto.Content = InputStr
If Crypto.DecryptString Then
Return Crypto.Content
Else
Return Crypto.CryptoException.Message
End If

End Function


اینم فایل مورد نیاز رمز نگاری:
http://barnamenevis.org/forum/attachment.php?attachmentid=12433&d=1195905354


با این تفاسیر باید بتونی یه برنامه trial سی روزه درست کنی.

saghari
سه شنبه 04 دی 1386, 11:18 صبح
با سلام
یک راه ساده اینه که هنگام ساخت setup برنامه از نرم افزارهایی که این قابلیت رو بهت میدن استفاده کنی مثل Install Shild . البته من پیشنهاد میکنم اگه قصد ارائه نسخه مدت دار داری حتما یه قسمتهایی رو از نرم افزارت بردار.

ir_programmer
سه شنبه 04 دی 1386, 11:24 صبح
درسته. اگر از برنامه های موجود تو بازار استفاده کنی که خوبه. من فقط راه دستی اونو گفتم.

واسه نمونه:
http://www.p30world.com/archives/003939.php

amirsajjadi
سه شنبه 04 دی 1386, 20:14 عصر
ذخیره ی تاریخ توی فایل درسته ولی یک مشکل وجود داره اونم اینه که کاربر اگه تاریخ سیستم رو مدام به تاریخ اون روز تغییر بده به مشکل برمیخوره
مثلا : کاربر نرم افزار رو اجرا میکنه ، تاریخ توی فایل ذخیره میشه حالا دوباره فردای اون روز نرم افزار رو اجرا میکنه حالا اگه کاربر چیزی از کامپیوتر سر در بیاره میاد تاریخ رو قبل از اجرای برنامه یک روز به عقب می بره ؛ اینجاست که مشکل پیش میاد
به نظر من اگه تعداد باز شدن نرم افزار رو توی فایل ذخیره کنی بهتره مثلا اگه 50 بار نرم افزار اجرا بشه پیغام بده

sinpin
چهارشنبه 05 دی 1386, 09:25 صبح
ذخیره ی تاریخ توی فایل درسته ولی یک مشکل وجود داره اونم اینه که کاربر اگه تاریخ سیستم رو مدام به تاریخ اون روز تغییر بده به مشکل برمیخوره
مثلا : کاربر نرم افزار رو اجرا میکنه ، تاریخ توی فایل ذخیره میشه حالا دوباره فردای اون روز نرم افزار رو اجرا میکنه حالا اگه کاربر چیزی از کامپیوتر سر در بیاره میاد تاریخ رو قبل از اجرای برنامه یک روز به عقب می بره ؛ اینجاست که مشکل پیش میاد
به نظر من اگه تعداد باز شدن نرم افزار رو توی فایل ذخیره کنی بهتره مثلا اگه 50 بار نرم افزار اجرا بشه پیغام بده

اولا که قرار نیست چیزی بصورت Clear Text ذخیره بشه، اطلاعات کد میشه بعد ذخیره...


اگرچه این روشها یه جورایی منسوخ شده (بدلیل عدم امنیت) اما چون پرسیده بودید :
زمان اولین اجرای برنامه (یا نصب اون رو) رو در جایی بصورت کد شده (که کسی نتونه از منطق اون سر دریباره) ذخیره کنید‌(مثلا رجیستری یا پوشه ویندوز یا ...) بعد هربار موقع اجرای برنامه چک کنید که اختلاف امروز با اون مقدار کمتر از 10 باشه و گرنه...

ضمن اینکه این مشکل رو هم میشه یه جورایی دور زد :‌
اگه تاریخ سیستم به هر دلیل عقب رفت برنامه اجرا نشه. اینجوری که برنامه تاریخ آخرین اجرای خودش رو هم در جایی ذخیره کنه و اگر زمانی اختلاف تاریخ روز با اون مقدار منفی شد پیغام میده که : "آفرین پسر خوب، اما...!"

با همه ی این حرفا باز هم حرفم رو تکرار میکنم که این روشها اصلا پاسخگوی مشکلات امنیتی نیست...
برای مثال این دو رو سرچ کنید : regmon و filemon دو برنامه کوچک و رایگان هستند که تمام تغییرات لحظه ای روی فایلها و رجیستری رو مانیتور میکنند.

GGRRSS_2
چهارشنبه 05 دی 1386, 16:21 عصر
دوست عزیز درصورتی که از دیتا استفاده میکنید یک راه این است که مجوز ثبت بیش از 5 ردیف را ندهید و دیتاهای اصلی را که از ضروریات است خالی کنید

amirsajjadi
پنج شنبه 06 دی 1386, 08:16 صبح
خوب من که نگفتم تاریخ رو یک روز بیاره عقب من گفتم تاریخ رو به همون روز تغییر بده یعنی اختلاف تاریخ برابر صفر بشه

sinpin
پنج شنبه 06 دی 1386, 09:22 صبح
خوب من که نگفتم تاریخ رو یک روز بیاره عقب من گفتم تاریخ رو به همون روز تغییر بده یعنی اختلاف تاریخ برابر صفر بشه

خب بگید اگه اختلاف تاریخ امروز و LastExecute کوچیکتر یا مساوی صفر بود آنگاه برنامه اجرا نشه...
LastExecute تاریخ آخرین اجرای برنامه هست که اونهم در جایی ذخیره میشه. من قبلا از این روش استفاده کردم و جواب گرفتم. منتها تمام تاریخ ها رو کد شده ذخیره کنید.

fat_roze2000
دوشنبه 25 شهریور 1387, 15:01 عصر
http://barnamenevis.org/forum/showth...138#post595138