اذهب الي المحتوي
أوفيسنا

الشرح الكامل التفصيلي المصور لمعرفة نسخة الأكسيس وتخفيض الأمان برمجيا


zahrah2016

الردود الموصى بها

الشرح الكامل التفصيلي المصور لمعرفة نسخة الأكسيس وتخفيض الأمان برمجيا

اخواني الكرام

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

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

نبذه عن نسخ برنامج الأكسيس

كلنا يعلم ان اي نسخة من برنامج الأكسيس لها رقم خاص يميزها عن غيرها من النسخ فمثلا :

نسخة الأكسيس 97 نجد انها تأخذ الرقم 8.0

نسخة الأكسيس 2000 نجد انها تأخذ الرقم 9.0

نسخة الأكسيس 2002 وهي نسخة الـ XP نجد انها تأخذ الرقم 10.0

نسخة الأكسيس 2003 نجد انها تأخذ الرقم 11.0

نسخة الأكسيس 2007 نجد انها تأخذ الرقم 12.0

كيف تتعرف على نسخ الأكسيس الموجوده لديك

كل ما عليك هو اتباع هذه الطريقة :

1. من الويندوز اضغط على ابدأ

2. اختر تشغيل واكتب فيه RegEdit

post-15367-1188131398.gif

اتبع المسار التالي حتى تصل الى المجلد Office

HKEY_CURRENT_USER\Software\Microsoft\Office
وستجد جميع ارقام نسخ الأكسيس المثبته على جهازك post-15367-1188131452.gif بعد ان عرفنا ارقام نسخ الأكسيس والمسار الخاص بها نريد ان يقوم الكود برمجيا بمعرفة النسخة التي تم فتحها . لهذا سوف نستخدم هذه الوظيفة سواء في وحدة نمطية جديده او توضع مباشرة في الـ VBA ( محرر الفيجول بيسك للتطبيقات ) للنموذج ومن ثم استدعاؤها . كود معرفة نسخة الأكسيس المستخدمة حاليا
Function GetVersion() As String
    GetVersion = SysCmd(acSysCmdAccessVer)
End Function
تخفيض أمان برنامج الأكسيس الغرض كلنا يقوم بتصميم برامج سواء كانت خاصة او لأغراض ربحيه ولكن احيانا يواجه المستخدمين الذين ليس لهم دراية او معرفة مسبقه بطريقة تخفيض امان الأكسيس ولهذا تظهر لهم بين الحين والآخر الرسائل المزعجة الخاصة بتحذيرات امان الأكسيس لهذا سنقوم بكتابة وظيفة مهمتها تخفيض أمان برنامج الأكسيس الذي يعمل وقت فتح البرنامج وتتم هذه العملية لمرة واحده فقط ومن بعدها سوف يستمر برنامج الأكسيس منخفضا امانه مهما فتحت من قواعد بيانات . الطريقة العادية لتخفيض أمان برنامج الأكسيس لتخفيض أمان برنامج الأكسيس من النسخة 97 وحتى النسخة 2003 فهو بإتباع هذه الطريقة : 1. الذهاب الى اشرطة قوائم الأكسيس 2. ثم اختيار ادوات 3. ثم اختيار ماكرو 4. ثم اختيار الأمان post-15367-1188131581.gif ومن ثم وضع الإشارة على الإختيار الأخير وهو " منخفض " ثم موافق post-15367-1188131632.gif اما في برنامج الأكسيس 2007 فيتم خفض الأمان يدويا بهذه الطريقة 1. الذهاب للقائمة الرئيسية واختيار خيارات الأكسيس . post-15367-1188131678.gif 2. من الخيارات اختر مركز التوثيق ثم اختر اعدادات مركز التوثيق . post-15367-1188131716.gif 3. اختر اعدادات الماكرو ثم ضع الأختيار على اخر اختيار وهو " تمكين كافة وحدات الماكرو " post-15367-1188131757.gif ولكن ليس من المعقول ان نقوم بهذه الخطوات في كل مره او ان نقوم بإبلاغ المستخدمين لهذه الخطوات عندما تظهر لديهم تحذير الأمان لهذا نريد ان يتم ذلك برمجيا بدون تدخل المستخدم . لهذا يجب ان نحصل اولا على المفاتيح الخاصة بهذه العملية من خلال الريجستري الخاص بالويندوز . في الخطوة السابقة لتخفيض أمان الأكسيس يدويا قمنا بوضعه على منخفض لهذا دعونا نرى كيف تم عمل ذلك في الريجستري . لو قمنا بفتح الريجستري وتتبع المسار التالي الخاص بالأكسيس فسنجده بهذه الطريقة : post-15367-1188137412.gif جميع النسخ من 97 وحتى 2003 تأخذ هذا المسار مع اختلاف الرقم في نسخة الأكسيس وهي هنا رقم 11.0 وتعني نسخة اكسيس 2003 للمستخدم هو:
[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security]
وللنظام هو :
[HKEY_LOCAL_MACHINE\Software\Microsoft\Office\11.0\Access\Security]
وسنجد ان المفتاح الفرعي لها جميعا بعد تخفيض الأمان يدويا هو
"Level"=dword:00000001
اما في الأكسيس 2007 فالوضع مختلف قليلا
[HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Access\Security]
حيث يكون المفتاح الفرعي له كالتالي فقط
"VBAWarnings"=dword:00000001
وظيفة SaveRegLong حفظ قيمة في الريجستري عبر مفتاح فرعي من نوع Dword
Option Compare Database
Option Explicit

Enum RegHive
    HKEY_CLASSES_ROOT = &H80000000
    HK_CR = &H80000000
    HKEY_CURRENT_USER = &H80000001
    HK_CU = &H80000001
    HKEY_LOCAL_MACHINE = &H80000002
    HK_LM = &H80000002
    HKEY_USERS = &H80000003
    HK_US = &H80000003
    HKEY_CURRENT_CONFIG = &H80000005
    HK_CC = &H80000005
    HKEY_DYN_DATA = &H80000006
    HK_DD = &H80000006
End Enum

Enum RegType
    REG_SZ = 1
    REG_BINARY = 3
    REG_DWORD = 4
End Enum

Public Const ERROR_SUCCESS = 0&
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Public Function CreateRegKey(hKey As RegHive, strPath As String)
Dim hCurKey As Long
Dim lRegResult As Long
    lRegResult = RegCreateKey(hKey, strPath, hCurKey)
        If lRegResult <> ERROR_SUCCESS Then
            'there is a problem
        End If
    lRegResult = RegCloseKey(hCurKey)
End Function

Public Function SaveRegLong(ByVal hKey As RegHive, ByVal strPath As String, ByVal strValue As String, ByVal lData As Long)
Dim hCurKey As Long
Dim lRegResult As Long
    lRegResult = RegCreateKey(hKey, strPath, hCurKey)
    lRegResult = RegSetValueEx(hCurKey, strValue, 0&, REG_DWORD, lData, 4)
    If lRegResult <> ERROR_SUCCESS Then
    End If
    lRegResult = RegCloseKey(hCurKey)
End Function
سنقوم الآن بإستدعاء هذه الوظيفة من خلال الكود الموجود في حدث عند عداد الوقت لنموذج الشاشة الإفتتاحية للبرنامج وسيكون لجميع نسخ الأكسيس بهذه الطريقة
Private Sub Form_Timer()
Dim Version As String
Dim strVer As String
Dim strValueM As String
Dim strValueU As String
Version = GetVersion()
If Version = "8.0" Then
strValueM = SaveRegLong(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\8.0\Access\Security", "Level", 1)
strValueU = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\8.0\Access\Security", "Level", 1)
ElseIf Version = "9.0" Then
strValueM = SaveRegLong(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\9.0\Access\Security", "Level", 1)
strValueU = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\9.0\Access\Security", "Level", 1)
ElseIf Version = "10.0" Then
strValueM = SaveRegLong(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\10.0\Access\Security", "Level", 1)
strValueU = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\10.0\Access\Security", "Level", 1)
ElseIf Version = "11.0" Then
strValueM = SaveRegLong(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\11.0\Access\Security", "Level", 1)
strValueU = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\11.0\Access\Security", "Level", 1)
ElseIf Version = "12.0" Then
strValueU = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\12.0\Access\Security", "VBAWarnings", 1)
End If
DoCmd.Close
DoCmd.OpenForm "form"
End Sub
حيث ان الوظيفة الإساسية SaveRegLong تأخذ هذه القيم
SaveRegLong(hKey,strPath,strValue,lData)

حيث hKey يمثل نوع المفتاح الرئيسي وهو اما HKEY_LOCAL_MACHINE او HKEY_CURRENT_USER

strPath يمثل المسار كاملا للمفتاح الفرعي Software\Microsoft\Office\11.0\Access\Security

strValue اسم المفتاح وهو في الأكسيس من 97 الى 2003 يكون Level اما في الأكسيس 2007 فيكون VBAWarnings

lData هي القيمة المطلوب كتابتها لهذا المفتاح وهي في جميع النسخ الرقم 1

نهاية الشرح

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

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

وهذا هو البرنامج كاملا ( والكمال لله وحده ) .

zaAllAccesVersionAndSecurityLowLevel_Pro.rar

ختاما لكم مني خالص الشكر والتقدير

تم تعديل بواسطه zahrah
  • Thanks 1
رابط هذا التعليق
شارك

السلام عليكم

جزاك الله خيراً أخت زهره على هذا الشرح الكافي والوافي وجعله في ميزان حسناتك

ولا تحرمينا من إطلالتك في هذا المنتدى

تم تعديل بواسطه عمار زيد
رابط هذا التعليق
شارك

جزاك الله خيراً معلمتنا الفاضلة زهره على هذا الشرح المميز والنادر جداً

أرجو إعادة رفع المثال المرفق مع الموضوع لأنني في كل مرة بعد أن أقوم بتحميلة وعند فك الضغط تظهر لي رسالة مفادها أن الملف تالف ؟؟؟؟

جعله في ميزان حسناتك

تم تعديل بواسطه HUSSIN
رابط هذا التعليق
شارك

بارك الله فيكم جميعا

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

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

zaAllAccesVersionAndSecurityLowLevel_Pro

رابط هذا التعليق
شارك

  • 1 month later...
  • 3 weeks later...
  • 2 weeks later...

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

رابط هذا التعليق
شارك

  • 1 year later...

الاخت زهرة لقد حاولت اشغل برنامج معمول على اكسس 2003 على اكسس 2007 لكن دون فائدة وتوقعت ان البرنامج يحتاج خفض امان الميكرو ، لقد جربت القاعدة المرفقة في الموضوع على جهاز فيه 2007 لايعمل تاتي اللوحة الترحيبية ثم يقف عن العمل ما الحل ؟؟؟؟؟؟؟؟؟؟

مع العلم أن ( [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access\Security] ) ان ( Security ) غير موجودة في الرجستي مع هذا المسار

رابط هذا التعليق
شارك

بارك الله فيك اينما حللتى اختي واستاذتي ومعلمتي الفاضلة زهرة

جزاك الله خيراً أخت زهره على هذا الشرح الكافي والوافي وجعله في ميزان حسناتك وحفظك وحفظ لك ابنتيك

مع خالص الشكر والتقدير

رابط هذا التعليق
شارك

أختي الغالية / أم عهود

مليون تحية طيبة لكي وبعد ،،،،،،،،،،،،،،،،،،

أتمنى أن تكوني بألف خير وبصحة جيدة

كما أتمنى أن تعودي لنا كما عودتينا ، وأتمنى أن لا يكون انقطاعك عنا فجأة وبدون مقدمات وأن يكون السبب خير

أشكرك أختي الغالية على هذا الشرح الجميل والرائع وبالفعل الجميع في حاجة ماسة الى خبراتك.

وهل المثال السابق ينفع مع اكسس2007؟

=============

بمزيد الاحترام والتقدير

=============

رابط هذا التعليق
شارك

نشكرك استاذتنا زهرة على هذا الطرح المميز والقدرة الرائعة في ايصال المعلومة

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

وجزاك الله الف الف خير وجعلة في ميزان حسناتك

رابط هذا التعليق
شارك

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

الاخت زهرة لقد حاولت اشغل برنامج معمول على اكسس 2003 على اكسس 2007 لكن دون فائدة وتوقعت ان البرنامج يحتاج خفض امان الميكرو ، لقد جربت القاعدة المرفقة في الموضوع على جهاز فيه 2007 لايعمل تاتي اللوحة الترحيبية ثم يقف عن العمل ما الحل ؟؟؟؟؟؟؟؟؟؟

مع العلم أن ( [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access\Security] ) ان ( Security ) غير موجودة في الرجستي مع هذا المسار

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information