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

كيف تستطيع منع التعديل فى قاعدة بيانت((( MDE ))) ( ترتيب الافكار )

مغلقرائج
بدأه محمد طاهر في 1 مارس 2003 · 50 رد · 7,144 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بالاشارة الي الموضوع السابق و الذي تفضل بطرحه الاخ منصور

http://www.arabteam2000.com/vb/showthread....&threadid=22119

و نظرا لاهمية الموضوع ، تم اغلاق المشاركة السابقة /، و التي تحوي علي أسلوب فك القاعدة و عدة محاولات للتغلب عليها ، و تم اغلاق الموضوع السابق لتسهيل المتابعة حيث وصل الي 4 صفحات و لاهميته نعيد الطرح باسلوب آخر

تعالوا نرتب أفكارنا ، و نطرح الادوات المتاحة للتتعامل مع هذه الافكار

أو ما يمكن ان يمت بصلة للموضوع و لو من بعيد

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

و نرجو الا يتردد أحد فى طرح فكرة ، و ألا يقلل من شان فكرة طرحها أخر ، لان أي فكرة يمكن ان تؤدي من منظور ما الي حل أو ترشد الي حل حتي لو كانت هي نفسها بهاخطأ

اولا : كيف نتغلب علي المشكلة

ثانيا : الادوات المساعدة فى التغلب علي المشكلة

ثالثا : أفكار منوعة

رابعا : روابط ذات علاقة بالموضوع ( أو شبه علاقة )

اولا : كيف نتغلب علي المشكلة

1-اما بمنع اظهار النموذج فى وضع التصميم فى حالة ال mde

2-أو بعمل اختبار علي هل هناك نموذج مفتوح فى وضع التصميم ام لا و من ثم اغلاق القاعدة

3-أو بمنع الحفظ بعد التعديل فى الفورم ( أي أن الفتح فى وضع التصميم مسموح و لكن نمنع الحفظ بعد التعديل )

ثانيا : الادوات المساعدة

1- للتعرف علي هل الملف من نوع mde أم لا ؟؟

Function IsItMDE(dbs As Object) As Boolean

    Dim strMDE As String

    On Error Resume Next

    strMDE = dbs.Properties("MDE")

    If Err = 0 And strMDE = "T" Then

        ' This is an MDE database.

        IsItMDE = True

    Else

        IsItMDE = False

    End If

End Function

2- للتعرف هل هناك نماذج مفتوحة فى وضع التصميم أم لا

Function IsLoaded(ByVal strFormName As String) As Integer

 ' Returns True if the specified form is open in Form view or Datasheet view.

    

    Const conObjStateClosed = 0

    Const conDesignView = 0

    

    If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then

        If Forms(strFormName).CurrentView = conDesignView Then

            IsLoaded = True

        End If

    End If

    

End Function

3- دوال api لتوقيف تنفيذ اجراء معين لفترة محددة

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)



Private Sub Command1_Click()

 'Sleep for 5000 milliseconds



    Sleep 5000

  

End Sub



Private Declare Function SleepEx Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long

Private Sub Form_Load()

   

 'Sleep 2 seconds

    

SleepEx 2000, False



End Sub

4- لعمل encryption

Sub EncryptDb()

   Const conFilePath = "C:Program FilesMicrosoft OfficeOfficeSamples"   DBEngine.CompactDatabase conFilePath & "Orders.mdb", conFilePath & _

      "EOrders.mdb", dbLangGeneral, dbEncrypt

End Sub

ثالثا : أفكار

1-أن نحاول أن نتعرف هل محرر البيزيك مفتوح أم لا ؟ و من ثم نغلق القاعدة فى حالة كونها mde

2-أن نحاول تشغيل دالة تختبر هل هناك نموذج فى وضع التصميم أم لا و ذلك فى حال كون الملف mde ، و لكن كيف نشغلها ؟؟

اذا شغلناها من تايمر فى نموذج فسيتوقف تنفيذه عند فتحه فى وضع التصميم

فربما يمكن تشغيلها فى دالة تعمل باستمرار فى الخلفية كل فترة محددة منذ فتح البرنامج ، و ربما يفيد فيها دوال ال api مثل sleep و sleepex

3- هل من المفيد محاولة تشغيل دالة الاختبار من قاعدى بيانات أخري ، و لا تفتح القاعدة الحالية الا اذا كاانت القاعدة التي تقوم بالاختبار مفتوحة ،

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

رابعا : روابط ذات علاقة بالموضوع ( أو شبه علاقة )

http://www.microsoft.com/office/ork/2000/t...hree/65t3_4.htm

http://msdn.microsoft.com/library/default....application.asp

http://www.microsoft.com/accessdev/article...ters/ba14_3.htm

http://www.microsoft.com/AccessDev/Article...ters/ba14_1.htm

http://www.vb123.com/toolshed/99_accvb/com...piledaccess.htm

http://www.dbforums.com/archives/t279169.html

http://www.dbforums.com/t406681.html

#2

ملاحظة :

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

#3

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

الاخ محمد طاهر

هذي الفكره اعيد كتابتها

من المعروف ان ملف MDE او ملف MDB عندما تقوم بشتغيله فانه يكون له نسخه في نفس المجلد الذي فيه البرنامج ويكون اسمه نفس اسم ملف البرنامج ولكن بامتداد اخر وهو (( LDB ))

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

والسؤال

اين يضع هذا الكود بحيث لا يتاثر بذغط على مفتاح ((( SHIFT )) ويعمل بعد (( 3)) ثواني ويمكن ان تتحكم فيه بحيث بعد كل (( 30 )) ثانيه يشيك على اي كائن مفتوح لتصميم واذا وجده يغلق البرنامج

الجوابه : يوضع هذا الكود في جسم القاعدة اي عندما تضغط زر المواس اليمن سوف تجد (( محرر الفجول بيسك ))) وهناء تضع هذا الكود

ولكن كيف يتم تفعيل هذا الكود

1-بتحريك الموس على جسم القاعدة

2-بفتح محرر (( الفجول بيسك )) اي اذا فتح محرر الفجول بيسك يتم تفعيل

هذا الكود مباشر

هذي فقط فكره للحمايه

اتمنا ان تناقش هذي الفكره

و الله الموفق

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

#4

الأخ أحزان

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

أما عن الملف ال ldb ، فكما ذكرنا أنه يمكن التعرف علي نوع الملف بالكود كما سبق ( هل Mdb أو لا ) فلا توجد مشكلة فى عملية التعرف في حد ذاتها

#5

السلام عليكم

الحقيقة أنا لم أقم بأي تجربة ولكني فهمت مما سبق أنه لا يمكن الوصول إلى كود موديول الفورم .

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

وأنا لا أرى فيها أي مشكلة أي التعديل على الفورم حيث أرى بعض البرامج الكبيرة تتيح لك التعديل على نماذجها ولا يضيرها ذلك في شيء .

تحياتي للجميع

#6

بسم الله الرحمن الرحيم

استخدمت ومازلت استخدم طريقة استخدام الحماية على مستوى المستخدم في اكسس 97 . لا يستطيع المتخدم تجاوز الصلاحيات الممنوحه له سواء في النماذج أو كائن آخر غيره.

حرصت ان يكون المسؤول مالك owner للنموذج لاحظت حماية بيانات فعالة و ان قاعدة frontend لا تفتح ابد لغير المستخدم المعرف

لم احول القاعده الىMDB لعدم الحاجه

هذ ه تحربي في هذا الموضوع منذ عام 1998

كل عام وأنتم جميعا بخير

أطيب التمنيات

خطيب

#7

بسم الله الرحمن الرحيم

و

اقتباس
نرجو الا يتردد أحد فى طرح فكرة ، و ألا يقلل من شان فكرة طرحها أخر ، لان أي فكرة يمكن ان تؤدي من منظور ما الي حل أو ترشد الي حل حتي لو كانت هي نفسها بهاخطأ

هل انا خارج عن الموضوع

شرح الزميل حارث مشكورا الجزء الأكبر من هذا الموضوع ولم يتطرق لموضوع الصلاحيات الممنوحه للمستخدم

أرغب بمعرفة صحة أو عدم صحة التجربة

#8

أخي خطيب

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

و الموضوع فى الارشيف ، و اعتقد الذي طرحه هو الاخ المزيني

مع تحياتي

#9

السلام عليكم

إخواني تذكيركم دائماً بعدم التردد في طرح أي فكره جعلني اتشجع بطرح فكره لا أعلم إمكانية تنفيذها ..

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

ولكن لا أعلم إذا كان هذا ممكن أم لا .

شكراً لسعة صدركم

أخوكم رضا

#10
اقتباس
تحديد حجم النموذج بالكيلوا بايت

أخي رضا

لا أعرف طريقة لقياس حجم نموذج بمفرده

و ربما يكون ذلك غير ممكن

#11

اخي العزيز محمد طاهر

هل استطاع احد فتح نموذج في وضع التصميم في قاعدة بيانات MDE ?

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

و الموضوع فى الارشيف

ارجوا كتابة العنوان

#12

أقصد الحماية علي مستوي المستخدم

أما التعديل فى ال mde فالرابط مشار اليه فى اعلي هذا الموضوع

#13

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

تحية للجميع وبعد.

بنسبة إلى قاعدة البيانات المحولة إلى امتداد MDE يمكن حمايتها بطرق كثيرة والكثير يستخدم قاعدة البيانات كما هي على امتداد MDB ولكن يستخدم بعض الأكود منها:-

1- يقوم بعض المبرمجين بإخفاء جميع الجداول والاستعلامات والنماذج والتقارير والأكواد في قاعدة البيانات وهي على متداد MDB .

ولا يمكن لمستخدم الذهاب إلى قائمة أدوات ثم ماكرو ثم استدعاء فجول بيسك وذلك لعدم وجود أي شي في هذه القاعدة كما لا يمكن استدعاء أي شي في هده القاعدة أو ربطها بقاعدة واحدة .

2- منهم من يقوم باستدعاء قاعدة البيانات من داخل ملف بامتداد EXE وتعد من أكثر استخداماً عند المبرمجين.

ولمن يريد فتح قاعدة البيانات عليه في البداية فك ملف EXE ومن ثم يتعامل مع القاعدة هذا لو كانت القاعدة لا يوجد بها عراقيل .

أسؤال كيف يتم وضع قاعدة البيانات داخل ملف EXE وكيف يتم استدعاء قاعدة البيانات منه عند النقر عليه

وان كان هذا برنامج فما هي الطريقة للحصول على هذا البرنامج .

#14

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

مساء الخير

الاخ / محمد طاهر حفظك الله

اقتباس:

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

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

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

وهذا توضحى اكثر للفكره

لنفرض ان عندك البرنامج واسم (( DB1.MDE )) وهذا الملف هو الذي يجب ان يكون محمي

ونفرض انك فتحت ملف (( DB2.MDB )) وفتحت بعد ذلك محرر الفجول بيسك ثم اغلاقة الملف (( DB2.MDB )) واعدته فتح الملف السابق وهو المبرنامج (( DB1.MDE )) فان هذا الملف عندما يتم تحميله يتاكد هل محرر فجول بيسك مفتوح او مغلق فاذا كان مفتوح يقوم باغلاقه او الخورج من البرنامج هذا مايخص محرر الفجول بيسك

اما الكائن الذي مفتوح للتصميم

فيمكن ان يضع كود بعد تحميل الملف ويقوم بالبحث عن اي كائن مفتوح لتصميم واذا وجده يقوم باغلاق البرنامج ((( اي بمعان اخر يمكن ان يعمل الكود بعد ما يشتغل ملف البرنامج بــ (( 20 ثانيه ))

اخي العزيز / محمد طاهر حفضك الله من كل مكروه

لقد تنقشة مع بعض الاخوه حول هذي المشكله وقد كانة الفكره مستحسنه ولاكـن اين توضع هذا الكواد بحيث لا تتاثر بضغط على مفتاح ((( SHIFT ))

وهو السؤل المهم

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

#15

السلام عليكم

افكاري حول هذه المشكلة تتلخص في الاتي

1- استخدام ادوات خارجية مثل ShareLock ، Code-Lock ، SecureCode Protection الا انني لم اتمكن على الحصول على اي منها بشكل مفتوح.

2 - فحص موقع الكائن داخل النموذخ مثل فحص مكان وجود مربع نص اي مكانه العمودي و الافقي و في حال تغيرهما بعد الفحص عند اول تشغيل يقوم البرنامج بلاغلاق و تدمير قاعدة البيانات.

3 - وضع كود يقوم بقراءة رقم تسلسل القرص الصلب و البيوس و يقوم بعمل تشفير لها و من ثم تخزينها في ملف نصي يقوم المستخدم بإرساله للمبرمج للحصول على كود او رقم يدخله في نموذج البداية وهذا الرقم يكون رقم البيوس مثلا بعد تشفيره و بالتالي يقوم البرنامج بفك التشفير و المقارنة مع رقم البيوس بقرائته بالكود فإذا كانت المطابقة صحيحة يستطيع المستخدم المتابعة في استخدام النظام .

4- مرفق ملف قد يفيد في هذا المجال الا انني لم اجربه لغاية الان لضيق الوقت ارجو من الاخوة اختباره و اخبارنا في النتائج .

وتفضلو بقبول فائق الشكر

اخوكم awaisa

selfdestruct.zip

#16

الأخ أبو هادي

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

أعتقد أن هذا حل مناسب ، و خاصة اذا أضفنا اليه بعض خصائص الكائنات المهمة مثل ال caption و rowsource

#17

الأخ الخيال

لم أجرب موضوع ال exe بعد

و ان كان لديك أو لدي أحد الاخوة اضافة بهذا الشان فليرشدنا الي البرنامج

و لكن البرامج التي أعرفها يتحول ال exe بعد التحميل الي mde ثانية

#18

الأخ أحزان

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

هذا ايضا حل اذا استطعنا التأكد ، و لكن كيف ؟؟

هل يعرف أحد كود منه نعرف ذلك ؟؟

#19

الأخ awaisa

اقتباس
- فحص موقع الكائن داخل النموذخ مثل فحص مكان وجود مربع نص اي مكانه العمودي و الافقي و في حال تغيرهما بعد الفحص عند اول تشغيل يقوم البرنامج بلاغلاق و تدمير قاعدة البيانات.

من هذا نضيف الي مشاركة أخونا أبو هادي ، تخزين مكان الكائنات ، و ربما أيضا أبعاده

#20

أعتقد أننا قاربنا علي الوصول لحل

اولا : كيف نتغلب علي المشكلة

1-اما بمنع اظهار النموذج فى وضع التصميم فى حالة ال mde

2-أو بعمل اختبار علي هل هناك نموذج مفتوح فى وضع التصميم ام لا و من ثم اغلاق القاعدة

3-أو بمنع الحفظ بعد التعديل فى الفورم ( أي أن الفتح فى وضع التصميم مسموح و لكن نمنع الحفظ بعد التعديل )

4-عمل مصفوفة تحوي أسماء الكائنات و خصائصها المهمة و مقارنتها بالنموذج عند الفتح (caption, rowsource ,width,height,top,left)

5- البحث عن كود يوضح هل محرر البيزيك مفتوح ام لا

و الأن نعرف أن أحدها علي الاقل ممكن التطبيق ، و هو اقتراح أبو هادي ( رقم 4) و هذا يزيل القلق من الموضوع

فهل هناك امكانية لتطبيق أي من الحلول الاخري ؟؟

#21

السلام عليكم

اظن ان استخدام الاذونات في الاكسس كفيل لحماية mde

من التعديل .

جرب القاعدة ادناه وهي الدليل من موقع الهيثم ومستخدم فيه اذونات

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

الموضوع الاول ولم استطع هل يستطيع احد تعديلها ..

حمل من هذا الرابط

http://alhaithm.infinology.com/Dalel2.2.exe

#22

عن نفسي لا أعرف كيف التغلب علي حماية المستخدم

و لكن فى هذا الموضوع

http://www.arabteam2000.com/vb/showthread....&threadid=18984

قام أبو هاجر بالتغلب عليها

#23

الإخوة الكرام

السلام عليكم

وهذه محاولة ، هل يستطيع أحد التغيير ؟ أنا في انتظار فرسان المنتدى

تحياتي

des_mde_forms2000.zip

#25

أخي الكريم محمد

السلام عليكم

ما شاء الله في نصف ساعة

ليتك شرحت الطريقة حيث إنني أنوي الحديث بالتفصيل عن الفكرة التي طبقتها في المثال السابق وقد أجريت عليه تعديلاً اتوقع أنه كان المنفذ الذي استطعت التعديل من خلاله وأحب أن أعرف طريقتك قبل وضعه

تحياتي

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

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