منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : منع التشغيل على أكثر من جهاز
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
تعلمت من الزميل [b]samee119485r[/b] فى موضوع سابق أمرين هامين[SIZE=3]
1-منع تشغيل البرنامج أكثر من عدد محدد من المرات(4 مرات مثلآ)
2-منع تشغيل البرنامج الاعلى جهازواحد(بعد سؤال العميل عن رقم القرص الصلب للجهازالمراد تشغيل البرنامج عليه)

ومن خلال هذين الأمرين حاولت عمل مشروع لمنع تشغيل البرنامج الا جهاز واحد(بدون سؤال العميل عن شئ)

[/SIZE][SIZE=4]وهذا مشروعى مرفق وأطلب منه أو من الأستاذ الكبير/ناجى ابراهيم أو من أى عضو يفهم فى مثل هذه الأمور
المساعدة فى أمرين هامين

1- مراجعة الكود وتصحيح الخطأ الموجود به
2- بعد تصحيح الخطأ كيف أمنع أى انسان من أى تعديل فى قاعدة البيانات النى هى جزء أساسى فى المشروع
أعلم فقط كيف أمنع أى انسان من أى تعديل فى برنامج البيزك (بتحويله الى ملف تنفيذى (بالأمر MAKE .EXE))
ولكن كيف أمنع أى تعديل فى قاعدة البيانات
التى وضعت بها رقم القرص الصلب لأول جهاز يتم عليه تشغيل البرنامج[/SIZE]

ولكم ألف شكر
السلام عليكم

اخي الكريم ما فائده قاعده البينات في المشروع

هل تريد وضع رقم الهارد دسك فيها والنفرض انك تريد ذلك

فتبقا المشكله هيه هيه
ان يجب عليك سؤال العميل عن رقم الهاردسك

قبل ان تعطيه البرنامج لكي تضع رقمه في القاعده
نعم أريد وضع رقم الهارد دسك في قاعده البينات ولكن لن أسأل العميل عن رقم الهاردسك
لن أضعه في قاعده البينات الا اذا كانت Nwork = 0 (أى عند أول مرة لتشغيل البرنامج)
أخزن رقم الHARD DISK الخاص بأول جهاز تم عليه التشغيل الذى حصلت عليه من الNew HDSLN وأتجه للجملة رقم100


PHP كود :
If Nwork "0" Then
 Rem
"الشرط السابق يعنى اذا كانت هذه هى أول مرة لتشغيل البرنامج"
 
txtHARD1 = New HDSLN
Rem
"لاحظ أنه بالجملةالسابقة يتم معرفة رقم الHARD DISK للكمبيوترالذى يتم تشغيل البرنامج عليه الآن ، ولاحظ أيضآأن هذه هى أول مرة لتشغيل البرنامج"

  
Adodc1.Recordset.MoveFirst
  Adodc1
.Refresh
  Adodc1
.Recordset.Fields(1) = txtHARD1
  Adodc1
.Recordset.Update
Rem
"الجمل الأربعة السابقة لتخزين رقم الHARD DISK الذى وجدته فى قاعدة البيانات"
GoTo 100
End 
If 

أما عند تشغيل البرنامج أى مرة بعد ذلك (أى اذا كانت0 [FONT=&amp]≠ [/FONT] Nwork ) فانه يحصل على رقم الHARD DISK الخاص بأول جهاز تم عليه التشغيل من خلال قاعدة البيانات
ويحصل على رقم الHARD DISK الخاص بالكمبيوتر الذى يتم تشغيل البرنامج عليه الآن من خلال الNew HDSLN
ويقارنهما


PHP كود :
txtHARDnew = New HDSLN
 Rem
"لاحظ أنه بالجملة السابقة  يتم معرفة رقم الHARD DISK الخاص بالكمبيوتر الذى يتم تشغيل البرنامج عليه الآن"
 
  
txtHARDold Adodc1.Recordset.Fields(1)
Rem"لاحظ أن  قيمة المتغيرtxtHARDold هو رقم الHARD DISK الخاص بالكمبيوتر الذى تم تشغيل البرنامج عليه أول مرة"
If txtHARDnew <> txtHARDold Then MsgBox "انت غير مخول بستخدام هذا البرنامج الرجاء مراسلة المصنع", , "نأسف"End 
اسلام الكبابى كتب :نعم أريد وضع رقم الهارد دسك في قاعده البينات ولكن لن أسأل العميل عن رقم الهاردسك
لن أضعه في قاعده البينات الا اذا كانت Nwork = 0 (أى عند أول مرة لتشغيل البرنامج)
أخزن رقم الHARD DISK الخاص بأول جهاز تم عليه التشغيل الذى حصلت عليه من الNew HDSLN وأتجه للجملة رقم100


PHP كود :
If Nwork "0" Then
 Rem
"الشرط السابق يعنى اذا كانت هذه هى أول مرة لتشغيل البرنامج"
 
txtHARD1 = New HDSLN
Rem
"لاحظ أنه بالجملةالسابقة يتم معرفة رقم الHARD DISK للكمبيوترالذى يتم تشغيل البرنامج عليه الآن ، ولاحظ أيضآأن هذه هى أول مرة لتشغيل البرنامج"

  
Adodc1.Recordset.MoveFirst
  Adodc1
.Refresh
  Adodc1
.Recordset.Fields(1) = txtHARD1
  Adodc1
.Recordset.Update
Rem
"الجمل الأربعة السابقة لتخزين رقم الHARD DISK الذى وجدته فى قاعدة البيانات"
GoTo 100
End 
If 

أما عند تشغيل البرنامج أى مرة بعد ذلك (أى اذا كانت0 [FONT=&]≠ [/FONT] Nwork ) فانه يحصل على رقم الHARD DISK الخاص بأول جهاز تم عليه التشغيل من خلال قاعدة البيانات
ويحصل على رقم الHARD DISK الخاص بالكمبيوتر الذى يتم تشغيل البرنامج عليه الآن من خلال الNew HDSLN
ويقارنهما


PHP كود :
txtHARDnew = New HDSLN
 Rem
"لاحظ أنه بالجملة السابقة  يتم معرفة رقم الHARD DISK الخاص بالكمبيوتر الذى يتم تشغيل البرنامج عليه الآن"
 
  
txtHARDold Adodc1.Recordset.Fields(1)
Rem"لاحظ أن  قيمة المتغيرtxtHARDold هو رقم الHARD DISK الخاص بالكمبيوتر الذى تم تشغيل البرنامج عليه أول مرة"
If txtHARDnew <> txtHARDold Then MsgBox "انت غير مخول بستخدام هذا البرنامج الرجاء مراسلة المصنع", , "نأسف"End 


اسمحلي،،، طلبك غريب

إذا كان العميل عنده البرنامج قبل التركيب ما راح تستفيد شي، لأنه ممكن يركبه بجهاز آخر وقاعدة البيانات فارغة أصلا.
فيه طريقة شركات البرامج

1: تعطي العميل رقم تفعيل
2: يقوم العميل بتركيب البرنامج.
3: يطلب البرنامج من العميل رقم التفعيل.
4: يقوم البرنامج بالاتصال بالموقع ويرسل له رقم التفعيل ورقم الهاردسك.
5: يقوم الموقع بالبحث عن رقم التفعيل إذا وجده يتأكد من الهاردسك والا فلا يتم التركيب بسبب عدم صحة رقم التفعيل.
6: إذا كان رقم الهاردسك (صفر) يعتبر ان العميل يقوم بالتركيب أول مرة ويقوم بحفظ رقم الهاردسك.
7: إذا كان رقم الهاردسك يوجد فيه رقم يقوم الموقع بالمقارنة بالرقم الي ارسله البرنامج.
8: إذا تطابق يكمل البرنامج التركيب وإلا فلا

انتظر ردك
اخي سلام

انا فاهم عليك ولقد نزلت المثال الذي وضعته

إقتباس :ويحصل على رقم الHARD DISK الخاص بالكمبيوتر الذى يتم تشغيل البرنامج عليه الآن من خلال الNew HDSLN
ويقارنهما

ما الفائده من قاعده البينات

تستطيع ان تتم المقارنه من نفس البرنامج وتستغني عن قاعده البينات

ولنفرض أننا عملنا البرنامج مع قاعده البينات وتم تحميل البرنامج من احد العملاء

طبعا راح تكون قاعده البينات فارفه ويتم تشغيل البرنامج من العميل لأول مره راح يخزن رفم الهاردسك في القاعده

وتم تشغيل البرنامج ثاني مره راح تتم المقارنه

وفي الحاله هاذه راح يتوقف البرنامج الا ان يتم تعريف رقم الهاردسك في البرنامج لكي يشتغل


واضن اننا رجعنا الى انقطه الأساسيه وهيه سؤال العميل عن رقم الهاردسك


#############################################

اخي العزيز
انت تريد التحكم في برنامجك بسماح لبعض من يحصل على هاذا البرنامج ان يستخدمه

وطلبك لا يمكن تحقيقه الا بطريقه واحد لا ثاني لها وهيه

ان طربط برنامجك بقاعده بينات عن طريق سيرفر يعني يتم الاتصال بين برنامجك وقاعدت البينات والوسيط بينهم هوه السيرفر

كما الحال في بعض المواقع عندما يتم التسجيل فيه يقول لك الرجاء نتظار التفعيل

هاذا على ما اضن الذي تريده انت
إقتباس :(بدون سؤال العميل عن شئ)

لان مستحيل تتحكم ببرنامجك بدون وسيط بينك وبين برنامجك

لابد من وسيط

############################################

وان كنت تقصد وضع ارقام هاردسكات معينين يعني لاشخاص معينين تريدهم هم الذين يستخدمون برنامجك

فلا انسحك بوضعهم في قاعدت البينات فتوجد عده طرق

يعني بامكانك عمل مصفوفه بأسماء الهاردسكات التي تريد ان يعمل عليها برنامجك ويتم المقارنه في المصفوفه

فان وجد فيشتغل البرنامج وان لم يوجد فلن يشتغل....

هاذا ان كنت تريد ذلك.........................

وهاذا الذي اعلمه والله اعلم
طريقة جديدة لم يستعملها احد

تجعل برنامجك يقوم بتشغيل برنامج (برنامج 2) آخر انت صنعته فيه ارقام الهارد ديسكات و يقوم بالمقارنة مع رقم هارد ديسك الجهاز و ارقام الهارد ديسك التي تضعها فيه

فان لم يكن الهارد موجودا بطريقة ما يتم ارسال رقم الهارد ديسك العميل ( بناء على رغبة العميل ) فعند تلقي الطلب يقوم صانع البرنامج باضافة ارقام الهارد ديسك الجديدة الى البرنامج2 و يرسلها للعميل على شكل ملف سيت آب يحذف ذلك الملف الاصلي للبرنامج2 و يضيف الملف البرنامج2 الجديد
السلام عليكم

اخي سلام

هاذه اداه من تصميمي وضعتها لك وللعضاء وهيه تقوم بالتصال بقاعده البينات التي على السيرفر وتسجيل العضويه وتنتظر التفعيل

انا وضعتها كمثال ليست للستخدام يعني بعد يومين سوف اقوم بتوقيف عمل الاداه

وان شاء الله سوف اقوم كل ساعه بتفعيل المستخدمين للتجربه

طريقه الاستخدام هيه بعد تحميل المشروع قم بفتحه وتشغيله ولا تفعل شئ

بس انتظر 10 الى 15 ثانيه سوف تخبرك بأتمام التسجيل وإنتظار التفعيل

والخروج من البرنامج وبعد تمام التفعيل سوف تتحقق من التفعيل واذا تفعل سوف تفتح فورم2

ولتصميم مثل هاذه الاداه يجب ان يكون لديك سيرفر ورقم اي بي ثابت ويجب ايضا ان يكون السيرفر متصل بنت دائما لتلقي التسجيل ويكون لديك سرع نت عاليه

ملاحظه::

هاذه الاداه كمثال ليست للستخدام


وتحياتي للجميع
الى الزميل/ MSDOS
إقتباس : فيه طريقة شركات البرامج

انتظر ردك
وكيف يتم عمل كل هذه الخطوات ؟
ان كان بامكانك عملها وارفاق البرنامج كاملآ فأرفقه

---------------------------------------
---------------------------------------

الى الزميل/ [b]samee119485r[/b]
إقتباس :ما الفائده من قاعده البينات
تستطيع ان تتم المقارنه من نفس البرنامج وتستغني عن قاعده البينات
كيف ذلك؟ بين من و من تتم المقارنة ؟
بين رقم الHARD DISK الخاص بالكمبيوتر الذى يتم تشغيل البرنامج عليه الآن من خلال الNew HDSLN
وبين
رقم الHARD DISK الخاص بأول جهاز تم عليه التشغيل من خلال قاع[SIZE=3]دة البيانات التى تم تسجيله فيها عند أول [/SIZE]مرة فقط لتشغيل البرنامج (حين كانت Nwork = 0 ) ولن يتغير بعدها أبدآ مهما تم التشغيل بعد ذلك
([SIZE=4]أى أن[/SIZE] قاع[SIZE=3]دة البيانات تحتوى على سجل واحد فقط [/SIZE])
إقتباس :طبعا راح تكون قاعده البينات فارفه ويتم تشغيل البرنامج من العميل لأول مره راح يخزن رفم الهاردسك في القاعده

وتم تشغيل البرنامج ثاني مره راح تتم المقارنه

وفي الحاله هاذه راح يتوقف البرنامج
نعم عندما يتم تشغيل البرنامج من العميل لأول مره راح يخزن رفم الهاردسك في القاعده
ولكن عندما تم تشغيل البرنامج ثاني مره فانه يحصل على رقم الHARD DISK الخاص بالكمبيوتر الذى يتم تشغيل البرنامج عليه هذه المرة الثانية من خلال الNew HDSLN
ثم راح تتم المقارنه بينه وبين الرقم الموجود فى قاع[SIZE=3]دة البيانات التى تم تسجيله فيها [/SIZE]عند أول مرة لتشغيل البرنامج
فان كان التشغيل هذه المرة الثانية على نفس الجهاز فلن يتوقف البرنامج(لأنه سيجد الرقمين متساويين)
وان كان التشغيل هذه المرة الثانية على جهاز آخر راح يتوقف البرنامج(لأنه سيجد الرقمين مختلفين)
وعلى العموم
أنا فى انتظار انتهائك من مراجعة هاذه الاداه التى تحدثت عنها كمثال ليست للستخدام
وارفاقها مع المشروع للستخدام
إقتباس :وعلى العموم
أنا فى انتظار انتهائك من مراجعة هاذه الاداه التى تحدثت عنها كمثال ليست للستخدام
وارفاقها مع المشروع للستخدام

اخي الاداه لقد تم الانتهاء من صنعها وهيه في الرد السابق بعنوان اداه قم بتحميل المشروع لتجربه


وان شاء الله سوف اراجع مثالك واعدل عليه

تحياتي
الصفحات : 1 2