PDA

View Full Version : مشکل حیاتی لایسنس



sina42048
پنج شنبه 11 اسفند 1390, 13:38 عصر
با سلام خدمت تمامی کاربران گرامی : یه سوال ازتون داشتم.......

من نرم افزاری رو طراحی کردم و میخوام لایسنسش کنم .. اونم طوری بشه که نرم افزار دیگه بعد از چند ماه قابل استفاده نشه (Trial) باشه ....... تو رو خدا اگه میدونین چیکار باید بکنم زود اعلام کنین:افسرده:

tam2145
پنج شنبه 11 اسفند 1390, 14:51 عصر
سلام !!
دقیقا منظورتون چیه ؟؟
می خواهید 30 روزه بشه یا کد فعال سازی روش بگذارید ؟؟
یا اینکه هر دو را روی برنامه بگذارید ؟؟:متفکر:

Hybrid
پنج شنبه 11 اسفند 1390, 15:05 عصر
سلام ،

به نظر من روی تعداد اجرای برنامه محدودش کنی بهتره ، مثلا 30 بار حق داره برنامه رو اجرا کنه و بعد از اون دیگه برنامه اجرا نشه.

tam2145
پنج شنبه 11 اسفند 1390, 15:34 عصر
سلام ،
به نظر من روی تعداد اجرای برنامه محدودش کنی بهتره ، مثلا 30 بار حق داره برنامه رو اجرا کنه و بعد از اون دیگه برنامه اجرا نشه.

البته دوست عزیز تعداد دفعات هم خوبه ولی اگه بیشتر نگاه کنی روزی بهتره !!
اکثر برنامه ها هم این کارو می کنند !!
فقط اگه می خواهی حقت ضایع نشه ، می تونی برنامه را در حالت آزمایشی محدود کنی !!:لبخند:

sina42048
پنج شنبه 11 اسفند 1390, 16:41 عصر
برنامه سي روزه بشه.....

sina42048
پنج شنبه 11 اسفند 1390, 17:52 عصر
کسی نیست جواب بده ؟؟؟؟؟؟؟؟؟

tam2145
پنج شنبه 11 اسفند 1390, 17:58 عصر
برنامه سي روزه بشه.....


سلام دوست عزیز !!
بفرما خودم ساختم و همیشه استفاده می کنم !! به هیچ وجه سرش کلاه نمی ره !!:متفکر:
البته اگه ریجستری را دست کاری نکنند !!:لبخند:
فقط چیز های اضافه اش را پاک کن !! چیز های خودت را بگذار !!:چشمک:



Dim d1, d2 As Date, d3, d4, d5 As Long, d6, d7 As String
d6 = GetSetting("tam2145-soft98.ir", "Aria", "datain", "")
If d6 = "" Then
d1 = Now()
d6 = CType(d1, System.String)
SaveSetting("tam2145-soft98.ir", "Aria", "datain", d6)
End If
d1 = CType(d6, System.DateTime)
d4 = Year(d1)
d5 = Year(Now())
d2 = DateAdd(DateInterval.Day, 30, d1)
d3 = DateDiff(DateInterval.DayOfYear, Now(), d2)
If d5 = d4 And d3 >= 0 And Now() >= d1 Then
نتیجه 30 روزه بودن
Else
نتیجه اتمام 30 روز
End If

sina42048
پنج شنبه 11 اسفند 1390, 18:13 عصر
دستت طلا .........

sina42048
پنج شنبه 11 اسفند 1390, 18:14 عصر
میشه یه توضیحی هم در مورد کد بدی ؟؟؟؟؟

tam2145
پنج شنبه 11 اسفند 1390, 18:30 عصر
باشه !!

در خط اول متغییر ها را تعریف می کنیم تا برنامه احتمالاً با خطا مواجه نشه !!
در خط دوم می آید زمان نصب برنامه را به متغییر می دهد که اگه دفعه اول باشه خالی هست !!
پس اگه خالی باشه توی شرط ابتدایی می آید و زمان دقیق سیستم را می گیرد و توی مسیر داده شده در ریجستری ذخیره می کند !!
اگر هم وجود داشته باشد شرط اول را رد می کند .
در خط بعدی چون زمان به عنوان رشته ذخیره شده اونو تبدیل به دیتا می کنه و به یک متغییر جدید از نوع دیتا می دهد .
توی خط بعدی سال زمان نصب برنامه مشخص می شود .
توی خط بعدی هم سال زمان سیستم مشخص می شود .
توی خط بعدی هم می آید و به زمان نصب برنامه 30 روز اضافه می کند .
توی خط بعدی هم اختلاف دو زمان نصب سیستم و زمان جاری سیستم را بر حسب روز حساب می کنه که 0 تا 366 یا منفی هست !!
توی خط بعدی می گم که ابتدا اختلاف زمانی نباید بیشتر از 30 روز باشه و بعد هم سال نصب برنامه با سال سیستم یکی باشه و بعدش هم ساعت سیستم را با ساعت ذخیره شده در ریجستری چک می کنه تا ساعت سیستم دستکاری نشده باشد .

بقیه اش هم که حله !!

امیدوارم گرفته باشی !!

sina42048
پنج شنبه 11 اسفند 1390, 18:36 عصر
آقا گرفتم . حله

sina42048
پنج شنبه 11 اسفند 1390, 18:59 عصر
فقط یه مشکل داره .......... وقتی کد به فرم اضافه کردم و تاریخ رو عوض کردم نشون داد که "مهلت به پایان رسیده است " ولی وقتی تاریخ رو برگردوندم نشون داد "مهلت به پایان نرسیده است " .. علیت چیه ؟؟؟

Hybrid
پنج شنبه 11 اسفند 1390, 19:17 عصر
فقط یه مشکل داره .......... وقتی کد به فرم اضافه کردم و تاریخ رو عوض کردم نشون داد که "مهلت به پایان رسیده است " ولی وقتی تاریخ رو برگردوندم نشون داد "مهلت به پایان نرسیده است " .. علیت چیه ؟؟؟

کد دوستمون اشکال داره ، مثلا شما امروز میاین این برنامه رو نصب میکنین ( سال میشه 1390 به فرض ) حالا دو روز دیگه میاین تاریخ رو 1 سال میارین عقب (1389) اونوقت در شرط آخر d4 یا d5 مساوی نیست و بدنه ی Else اجرا میشه و میگه برنامه مهلتش تموم شده!!!

sina42048
پنج شنبه 11 اسفند 1390, 19:21 عصر
شما یه کدی نداری که به ما کمک کنه ؟؟؟؟؟

sina42048
پنج شنبه 11 اسفند 1390, 19:26 عصر
ایهاالناس .. هیچ کس نمیدونه باید از چه کدی استفاده کنم ؟؟؟؟؟؟؟؟؟؟؟

tam2145
پنج شنبه 11 اسفند 1390, 19:52 عصر
فقط یه مشکل داره .......... وقتی کد به فرم اضافه کردم و تاریخ رو عوض کردم نشون داد که "مهلت به پایان رسیده است " ولی وقتی تاریخ رو برگردوندم نشون داد "مهلت به پایان نرسیده است " .. علیت چیه ؟؟؟

دوست عزیز سلام !!
کد درسته و دلیل این امر این که وقتی تاریخ را ببری عقب مثلا 2012 را به 2011 تبدیل و ... کنی ایراد می گیره و به عنوان کلاه گذاشتن سر برنامه حساب می کند که این پیغام را می دهد !!
فقط یک مشکلی داره که الان متوجه شدم اینه که اگه کمتر از 30 به سال جدید مونده باشه برنامه به مشکل بر می خوره که باید شرط آخری کامل بشه (( قسمت مقایسه سال )) که اونو تا صبح درست می کنم !!

فرید نجفلو
پنج شنبه 11 اسفند 1390, 19:57 عصر
ببینید دوست عزیز اگه می خواین از همین روش ساده استفاده کنید دو تا setting به پروژتون اضافه کنید(از Properties پروژه و زبانه settings)
یکی رو با تاریخ اجرا set کنید و اون یکی رو اگه مهلت تموم شد با True .وقتی برنامه تون برای بارهای بعد اجرا شد اول مورد دوم رو چک کنه اگه Trueبود دیگه تاریخ رو چک نکنه چون قبلا مهلت تموم شده و اگه False بود تاریخ رو هم چک کنه

tam2145
پنج شنبه 11 اسفند 1390, 20:23 عصر
با سلام مجدد !!
دوست گلم Farid.N (http://barnamenevis.org/member.php?243869-Farid.N) من دقیقاً متوجه ایده شما نشدم !! اگه بیشتر بازش کنید ، ممنون می شوم !! با مثال !!:متفکر:

دوست گلم sina42048 (http://barnamenevis.org/member.php?242793-sina42048) الان کد را درست کردم و فقط به جای سال ، ماه را چک می کنه (( توی شرط دوم )) !!:چشمک:



Dim d1, d2 As Date, d3, d4, d5, d8 As Long, d6, d7 As String
d6 = GetSetting("tam2145-soft98.ir", "Aria", "datain", "")
If d6 = "" Then
d1 = Now()
d6 = CType(d1, System.String)
SaveSetting("tam2145-soft98.ir", "Aria", "datain", d6)
End If
d1 = CType(d6, System.DateTime)
d2 = DateAdd(DateInterval.Day, 30, d1)
d3 = DateDiff(DateInterval.DayOfYear, Now(), d2)
d8 = DateDiff(DateInterval.Month, Now(), d2)
If d8 <= 1 And d3 >= 0 And Now() >= d1 Then
نتیجه 30 روزه بودن
Else
نتیجه اتمام 30 روز
End If

swallow.pa
پنج شنبه 11 اسفند 1390, 20:27 عصر
سلام دوست عزیز !!
بفرما خودم ساختم و همیشه استفاده می کنم !! به هیچ وجه سرش کلاه نمی ره !!:متفکر:
البته اگه ریجستری را دست کاری نکنند !!:لبخند:
فقط چیز های اضافه اش را پاک کن !! چیز های خودت را بگذار !!:چشمک:



Dim d1, d2 As Date, d3, d4, d5 As Long, d6, d7 As String
d6 = GetSetting("tam2145-soft98.ir", "Aria", "datain", "")
If d6 = "" Then
d1 = Now()
d6 = CType(d1, System.String)
SaveSetting("tam2145-soft98.ir", "Aria", "datain", d6)
End If
d1 = CType(d6, System.DateTime)
d4 = Year(d1)
d5 = Year(Now())
d2 = DateAdd(DateInterval.Day, 30, d1)
d3 = DateDiff(DateInterval.DayOfYear, Now(), d2)
If d5 = d4 And d3 >= 0 And Now() >= d1 Then
نتیجه 30 روزه بودن
Else
نتیجه اتمام 30 روز
End If




این کد رو با تغییر توی رجیستری و تغییر تاریخ میشه راحت تغییر داد

فرید نجفلو
پنج شنبه 11 اسفند 1390, 20:31 عصر
نمونه کد


83556


Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.
If My.MySettings.Default.FirstRunDate.Year = 1 Then 'FirstRun
My.MySettings.Default.FirstRunDate = Now 'SetFirstRunDate
My.MySettings.Default.Save()
ElseIf My.MySettings.Default.TrailVerExpired OrElse _
My.MySettings.Default.FirstRunDate.AddDays(30) < Now Then
My.MySettings.Default.TrailVerExpired = True
My.MySettings.Default.Save()
MsgBox("کاربر گرامی زمان استفاده از نسخه آزمایشی به اتمام رسیده است")
End
Else
End If
End Sub

sina42048
پنج شنبه 11 اسفند 1390, 20:39 عصر
از همه شما متشکرم ..........

tam2145
پنج شنبه 11 اسفند 1390, 20:40 عصر
نمونه کد

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.
If My.MySettings.Default.FirstRunDate.Year = 1 Then 'FirstRun
My.MySettings.Default.FirstRunDate = Now 'SetFirstRunDate
My.MySettings.Default.Save()
ElseIf My.MySettings.Default.TrailVerExpired OrElse _
My.MySettings.Default.FirstRunDate.AddDays(30) < Now Then
My.MySettings.Default.TrailVerExpired = True
My.MySettings.Default.Save()
MsgBox("کاربر گرامی زمان استفاده از نسخه آزمایشی به اتمام رسیده است")
End
Else
End If
End Sub

دستت درد نکنه فردین جون !! اگه می شه یک توضیحی هم بده آخه برام تازگی داره !!:لبخند: بخصوص درباره داده های که توی برنامه ذخیره می شوند !!:متفکر: اگه کتاب فارسی دربارش داری ، رد کن بیاد !! :چشمک:مرسی !!:قلب:


این کد رو با تغییر توی رجیستری و تغییر تاریخ میشه راحت تغییر داد

این را خودم هم می دانستم و گفتم !! خوب این کد در حد دانش خودم بود !! من چند ماهی نمی شه شروع به برنامه نویسی با vb 2008 کردم !! :دی:لبخند:

فرید نجفلو
پنج شنبه 11 اسفند 1390, 20:50 عصر
دستت درد نکنه فردین جون !! اگه می شه یک توضیحی هم بده آخه برام تازگی داره !!:لبخند: بخصوص درباره داده های که توی برنامه ذخیره می شوند !!:متفکر: اگه کتاب فارسی دربارش داری ، رد کن بیاد !! :چشمک:مرسی !!:قلب:


شما برای ایجاد یک setting جدید از Soloution Explorer رو پروژه راست کلیک و Proerties رو انتخاب کنید
از زبانه Settings هر چیزی از هر نوعی خواستید اضافه کنید(از گرید موجود) فقط اگه Scope رو با Application تنظیم کنید اون مورد فقط خوامدنی میشه
خوندن و نوشتنشم تو کد هست و اگه تغییر دادین نباید Save یاتون بره

tam2145
پنج شنبه 11 اسفند 1390, 21:12 عصر
فردین جون دمت گرم !!
می گم که خط 5 و 6 یعنی چه ؟؟
راستی اگه برای برنامه کد فعال سازی تعریف کنیم و اونو توی برنامه ذخیره کنیم آیا احتمال پچ و کرک و ... ساختن برای برنامه هست یا نه ؟؟؟؟؟؟

فرید نجفلو
پنج شنبه 11 اسفند 1390, 21:27 عصر
فردین جون دمت گرم !!
می گم که خط 5 و 6 یعنی چه ؟؟
راستی اگه برای برنامه کد فعال سازی تعریف کنیم و اونو توی برنامه ذخیره کنیم آیا احتمال پچ و کرک و ... ساختن برای برنامه هست یا نه ؟؟؟؟؟؟
فکر کنم شما اشتباه متوجه شدید. اینجا(و تقریبا در هیچ نرم افزار دیگه ای) چیزی داخل خود برنامه(EXE) ذخیره نمیشه
در واقع تنضیمات در یک فایل xml که روی هارد قرار داره ذخیره میشه نه داخل برنامه
و فایل های XML هم متنی هستند که حتی با Notepad هم قابل ویریش هستند
واسه همین داخل پستم گفته بودم روش ساده!

فرید نجفلو
پنج شنبه 11 اسفند 1390, 21:31 عصر
برای مثال محل دقیق این فایل برای نمونه ای که گذاشتم تو مسیر زیره(ویندوز 7):
C:\Users\Farid\AppData\Local\WindowsApplication1\W indowsApplication1.vshos_Url_racxolzealwtarwcuetbu vw5gp4iqw1e\1.0.0.0

tam2145
پنج شنبه 11 اسفند 1390, 21:35 عصر
فکر کنم شما اشتباه متوجه شدید. اینجا(و تقریبا در هیچ نرم افزار دیگه ای) چیزی داخل خود برنامه(EXE) ذخیره نمیشه
در واقع تنضیمات در یک فایل xml که روی هارد قرار داره ذخیره میشه نه داخل برنامه
و فایل های XML هم متنی هستند که حتی با Notepad هم قابل ویریش هستند
واسه همین داخل پستم گفته بودم روش ساده!

خب فردین جون !! حالا بریم سر وقت روش سختش !!
آخه من دارم چند نرم افزار می سازم که می خواهم 30 روزه و کد فعال سازی بهش بدم و تا جای ممکن می خواهم رمزگذاری شده باشه !!
اگه می خواهی همین جا بحث و دنبال کنیم یا اینکه یک تایپک دیگه باز کنیم و این روش را اونجا دنبال کنیم !!
آیا روش دوم امنیتش بالا هست یا نه ؟؟؟؟؟

sina42048
پنج شنبه 11 اسفند 1390, 21:46 عصر
میگم بد نشد این تاپیک رو ایجاد کردم ؟؟؟؟؟؟؟

فرید نجفلو
پنج شنبه 11 اسفند 1390, 21:53 عصر
بله روش دوم بهتره ولی اگه خودت بخوای بنویسی فکر نکنم دور زدنش زیاد سخت باشه(مخصوصا در حالت محدودیت زمانی)
ولی اگه از نرم افزار های موجود استفاده کنی بهتره. برای مثال
intellilock
dotnet reactor
هر دو مال یه شرکتن و مخصوصا اولی واسه همین کار ها ساخته شده و از کد هات هم محافظت می کنه
فقط مشکلشون اینجاست که من کرکشون رو جایی ندیدم:متفکر:
که این مشل ماست و درواقع یه نقطه قوت واسه اونا

اگه خواستی بحث و ادامه بدی یه تاپیک جدید بزنی بد نیست اینجا زیادی شلوغ شد

tam2145
پنج شنبه 11 اسفند 1390, 21:54 عصر
میگم بد نشد این تاپیک رو ایجاد کردم ؟؟؟؟؟؟؟

آره سینا جون !!
دمت گرم ، خودم حالشو نداشتم ولی الان رفتم تو نخ این موضوع !!:لبخند:
خب هم به نفع تو شد هم به نفع من !!:چشمک:
یک تیر و دو نشون !!:کف:

فرید نجفلو
پنج شنبه 11 اسفند 1390, 21:54 عصر
میگم بد نشد این تاپیک رو ایجاد کردم ؟؟؟؟؟؟؟
واسه خودت که بیشتر بد نشد:قهقهه:

sina42048
پنج شنبه 11 اسفند 1390, 21:57 عصر
آره ........... تاپیک خوبیه . دارم استفاده میکنم ادامه بدین

فرید نجفلو
پنج شنبه 11 اسفند 1390, 22:05 عصر
اگه بگید برنامنتون چیه و چجوری کار می کنه شاید بتونیم به نتیجه بهتری برسیم
من خودم تو یکی از نرم افزارهام(البته نه دفترچه تلفن ،حدود 80,000 الی 100,000 خطی می شد:چشمک:) هم از روش سریال و هم از روش محدویت زمانی استفاده کردم
ولی به شگردی دیگر!

sina42048
شنبه 13 اسفند 1390, 22:25 عصر
سلام دوست عزیز .. این شگردی که گفتین چیه ؟؟؟

فرید نجفلو
شنبه 13 اسفند 1390, 22:32 عصر
دوست عزیز ما این بحث رو تو یه تاپیک دیگه ادامه دادیم
چون این تاپیک هم شلوغ شده بود و چند تا پست بی محتوا ، موضوع نامناسب و...
آموزش ایجاد دوره زمانی trial و کد فعال سازی برای برنامه با سطح امنیت بالا (http://barnamenevis.org/showthread.php?330492-آموزش-ایجاد-دوره-زمانی-trial-و-کد-فعال-سازی-برای-برنامه-با-سطح-امنیت-بالا)

sina42048
شنبه 13 اسفند 1390, 22:35 عصر
ممنون ....

NitroPlus
یک شنبه 28 اسفند 1390, 17:07 عصر
آقا یه چیزی چه طور میشه تعداد روز های باقیب مونده رو نشون داد؟