الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هنا كود منع نسخ القاعده عن طريق السريال نمبر

مغلق
بدأه مبتدىء جدا في 22 أكتوبر 2002 · 14 رد · 2,826 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا الكود يقوم بمنع نسخ قاعدة البيانات عن طريق وضع السيريال نمبر للبرتشن الذي توجد به القاعده ,,,, قمت بتجربة الكود على ويندوز ميلينيوم وجدته يعمل بشكل سليم ,,, ولكن عندما قمت بتجربة الكود على ويندوز اكس بي وجدته لا يعمل ,,,,, فما السبب في انه لا يعمل على اكس بي وما التغيير الذي يجب ان يوضع به لكي يعمل على ويندوز اكس بي ,,,

Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" ( _
       ByVal lpRootPathName As String, _
       ByVal lpVolumeNameBuffer As String, _
       ByVal nVolumeNameSize As Long, _
       lpVolumeSerialNumber As Long, _
       lpMaximumComponentLength As Long, _
       lpFileSystemFlags As Long, _
       ByVal lpFileSystemNameBuffer As String, _
       ByVal nFileSystemNameSize As Long) As Long


Sub checkserial()
Dim disk As String

Dim serialnum As Long, serial As String

disk = "c:" 'غير الى القرص الذي تريد



RetVal = GetVolumeInformation(disk, NomVolume, Len(NomVolume), _
                        serialnum, dum, dum, ResStr, Len(ResStr))

'استخراج الرقم التسلسلي
serial = Right(String(8, "0") + Hex$(serialnum), 8)
serial = Left(serial, 4) + "-" + Right$(serial, 4)



If serial = "3E68-1EE7" Or serial = "ضع جهاز آخر" Then
    Exit Sub
Else
    MsgBox "غير مصرح للعمل على هذا الجهاز"
    DoCmd.Quit
End If
End Sub
#2

هل تظهر لك رسالة خطأ ؟

#3

لا يظهر اي شيء .. كأن الكود غير موجود ,,,

مع العلم عند تشغيل نفس القاعده مع ويندوز مليلينيوم فإن الامور تكون على ما يرام ويكون الكود فعالاً :confused:

#4

للرفع

#5

يمكن أن السبب أن دالة API

GetVolumeInformation

لاتعمل في الوندوز الأكس بي

#6

اشكرك اخي ابو حمود على الرد ....

اذن من وجهة نظرك ما التعديل المقترح لكي تعمل على اكس بي ؟

#7

السلام عليكم

هل معنى ذلك أنه إذا تم عمل Format للHD لا يتم تشغيل البرنامج إلا بالرقم المسلسل ..

وهل معنى ذلك ايضا أن فى الحالة السابقة سيضطر المستخدم لمناداة المبرمج ؟؟؟

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#8

نعم ولكن يحدث ذلك فقط في حالة استخدام ويندوز 98 او ويندوز ميلينيوم .... ولا يحدث ذلك في حالة استخدام ويندوز اكس بي :confused:

#9

السلام عليكم

يا اخى ممكن تعطينا مثال عن طريقة استخدام هذا الكود

الفكرة اكثر من رائعة و انا قربت اتجنن

صحح لى :

انا زودت MSGBOX للكود لكى اعرف السيريال نمبر قبل تنفيذ IF

يظهر الرقم بالشكل التالى "B-1BE9147"

اكتبه كده يقولى غير مصرح

اكتبة كدة "B1BE-9147" يقولى غير مصرح

اعمل ايه

و هل لازم تكون قاعدة البيانات فى البرتشن ام هذا الكود للاختبار فقط و هل له علاقة بنسخة الاوفيس؟

شكر خاص للاخ ابوحمود على المجهود الرائع فى هذا المنتدى

#10

السلام عليكم

أين يوضع الكود ؟!؟!؟

mk17481_26bccea871.gif
#11

سلام الله عليكم ورحمته تعالى وبركاته

اولاً احب ان انوِه ان هذا الكود من صنع الاخ ابو لمي

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

وهذا مثال على الكود :

ضع القاعده على الدليل c:

او غير الى الدليل الذي تريد من داخل الكود

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

ولمعرفة السيريال نمبر لأي برتشن افتح شاشة الدوس واكتب في مسار القرص الذي تريده

VOL

لا تنسى ان هذا الكود به مشكلة انه لا يعمل مع وندوز اكس بي :(

المثال مع المرفقات

testserial.zip

#12

هنا كود اخر توصلت اليه الان والحمد لله ,, وهو يعمل مع نظام التشغيل ويندوز اكس بي :P :D

Set fs = CreateObject("Scripting.FileSystemObject")
Set h = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName("c:"))) 'لاتنسى ان تضع  القرص الذي تريد وضع السيريال نمبر له

    If h.SerialNumber = 891553777 Then 'هنا نضع السيريال نمبرللقرص الذي نريد
       MsgBox "الحمد لله" 'في حالة ان السيريال صحيح تظهر رسالة الحمد لله
          Else
              MsgBox "يا مُعين يا الله" 'في حالة ان السيريال غير صحيح تظهر رسالة يامعين يا الله

'docmd.Quit 'هذا السطر اذا كنت تريد غلق القاعده في حالة السيريال غير صحيح

End If
End Sub

بالطبع هنا سؤال :

وهو كيف اعرف السيريال نمبر للقرص المحدد على الجهاز لكي اضعه في الكود السابق

واجابة هذا السؤال في المثال الذي في المرفقات

تحياتي :)

testserial.zip

#13

السلام عليكم

الأخ مبتدئ جداً ...

المثال الذي أرسلته عند تشغيل تظر لي هذا الرسالة :

علماً بأن الويندوز عندي 98 والأكسيس 2000

فما هو مرجع الكود ؟!؟!

mot.bmp

mk17481_26bccea871.gif
#14

اخي فتى الوادي:

هل ما تقصده المثال الاول ام المثال الثاني ؟؟

على وجه العموم هذه هي المراجع المعلّم عليها

1-Visual Basic for Applications

2-Microsoft Access 10.0 Object Library

3-Microsoft ActivX Data 2.5 Library

4-OLE Automation

او انك عندما قمت بتركيب الاكسس على جهازك لم تختر الخيار complete والله اعلم

#15

مثال ممتاز ، ولكن ألا يوجد طريقة تجعل الكود يتعرف على السيرال تلقائيا بدلا من وضعه يدويا .

سبب السؤال مثلا أنني أريد توزيع برنامج عملته . فى هذه الحالة يتطلب مني أن أضع السيريال لكل جهاز وهذا صعب أعتقد .

أشرف خليل

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…