اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

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

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

لانه عند فتح قاعدة البيانات عند البعض بعطي رسالة والمثير لا يفهم ان مستوى الامان عالي فيفشل في فتح القاعدة

جزاكم الله خيرا 

قام بنشر

عليكم السلام

اولا

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

ثانيا :

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

بالنسبة لي استخدم ملف تنفيذي يتم تشغيله اثناء تنصيب برنامجي

وهذا هو الملف .. يعمل على 12 ، 14 ، 15 ، 16

low_new.rar

قام بنشر
46 دقائق مضت, ابوخليل said:

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

هذه الجزئية لم افهمها استاذ @ابوخليل

انا عامل تخفيض الامان للاكسس  الخاص بي ..

قبل مدة عملت برنامج لعميل ...وحينما انزلته على حاسبته اشتغل طبيعي ولم تشتغل معي رسائل الامان ..علما انه لا يعرف بالاكسس ولا عوامل الامان 

هل هذا يعني ...ان نسخته سوف تعمل دون امان مع اي برنامج ؟

قام بنشر

الأمان الذي يتم التعديل عليه على اي جهاز من ملف (امان الماكرو) وضبطه على منخفض ، يكون عاما لكل ملف اكسس يتم تشغيله

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

طريقة الاستاذ جعفر ، تخفيض الامان فقط للملف الموجود داخل المجلد المعد

 

قام بنشر
10 ساعات مضت, ابوخليل said:

بالنسبة لي استخدم ملف تنفيذي يتم تشغيله اثناء تنصيب برنامجي

ما الذي يفعله هذا الملف بالضبط عمي أبوخليل ؟

وهل تشغله يدويا أم بأمر برمجي ؟

وهل يشترط أن يكون بجانب قاعدة البيانات أثناء التشغيل ؟

🙂 

قام بنشر
25 دقائق مضت, Moosak said:

ما الذي يفعله هذا الملف بالضبط عمي أبوخليل ؟

'strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\11.0\Access\Security", "Level", 1)
strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\12.0\Access\Security", "VBAWarnings", 1)
strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\14.0\Access\Security", "VBAWarnings", 1)
strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\15.0\Access\Security", "VBAWarnings", 1)
strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\16.0\Access\Security", "VBAWarnings", 1)
25 دقائق مضت, Moosak said:

وهل تشغله يدويا أم بأمر برمجي ؟

برنامج التحزيم يخدم بعدة اشياء :

منها تشغيل التطبيقات اثناء التنصيب او بعد الانتهاء

ومنها تنفيذ الأوامر كتسجيل المكتبات ونحوه .

ولكني لا حظت في الآونة الاخيرة قوة حماية وندوز .. وعدم السماح للبرامج العادية بتجاوز الحماية خاصة فيما يخص ملفات النظام 

اللي اقصده انه يكون في ملف التعديل اوامر تتجاوز حماية وندوز ، وكما ترى الملف يقوم بالتعديل على الريجستري ، ورقم واحد في سطر الكود يمثل درجة امان الماكرو ، والارقام من 11 الى 16 تمثل اصدارة اكسس .

 

25 دقائق مضت, Moosak said:

وهل يشترط أن يكون بجانب قاعدة البيانات أثناء التشغيل ؟

لا .. لا يشترط .. فبعض الملفات يتيح لنا برنامج التحزيم من توجيهها الى المجلدات المؤقته

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

 

  • Thanks 1
قام بنشر
45 دقائق مضت, ابوخليل said:

والارقام من 11 الى 16 تمثل اصدارة اكسس .

كيف لو أردنا إضافة الإصدارات الأحدث للقائمة ؟
لأن الملف exe  🙂 

قام بنشر

ان عملته على فيجوال 6 ويمكن عمله في اكسس بالاكواد نفسها

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

 

قام بنشر
1 ساعه مضت, ابوخليل said:

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

لو يمكن سحب الأكواد في ملف VBS يكون أفضل .. ولكن المشكلة أننا سندخل في معمعة مع مكافحات الفيروسات 😅🖐

وربما يكون لديك فكرة أفضل .. :rol:

قام بنشر

نسخ لصق

هذا كل الموجود في المشروع :

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
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&
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private 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
Private 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
Private 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

Private 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

Private 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 Timer1_Timer()
Dim strVM As String
Dim strVS As String
On Error Resume Next
'strVM = SaveRegLong(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\11.0\Access\Security", "Level", 1)
'strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\11.0\Access\Security", "Level", 1)
strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\12.0\Access\Security", "VBAWarnings", 1)
strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\14.0\Access\Security", "VBAWarnings", 1)
strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\15.0\Access\Security", "VBAWarnings", 1)
strVS = SaveRegLong(HKEY_CURRENT_USER, "Software\Microsoft\Office\16.0\Access\Security", "VBAWarnings", 1)
Unload Me
End Sub




 

  • Like 1
  • Thanks 1
  • 1 year later...
قام بنشر

رحمك الله ووالديك أستاذنا أبو خليل

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

وجزاك الله خير الجزاء

قام بنشر
54 دقائق مضت, abofayez1 said:

رحمك الله ووالديك أستاذنا أبو خليل

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

وجزاك الله خير الجزاء

جزاك الله خير يا ابا فايز على دعواتك الطيبة

سوف اضرب لك مثلا يقرب المسألة لك

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

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

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

وبشكل ادق : محرك اكسس هو من يفتح الملف والحماية في المحرك سابقة للفتح ..  

لذا :

اما التدخل من الخارج وتخفيض الأمان قبل فتح الملف ...

او التدخل يدويا  وتخفيض الامان  

لاحظ انه بعد التعديل يدويا يطالبك باعادة تشغيل ملفك

انا اتصور ان المسألة ابسط مما نتصور .. خاصة اذا ارسلت البرنامج الى عميل معلوماته محدودة

يكفي تصوير خطوات العملية .. او فيديو صغير ..

ولا يلزم ان تتم عملية تخفيض الأمان من خلال برنامجك وانما يمكن من خلال فتح اكسس جديد  ثم / ملف / خيارات / مركز التوثيق / امان الماكرو / ثم  حدد آخر سطر للاسفل وموافق للجميع

اتمنى ان يكون ردي هذا مفيدا

 

  • Like 1
قام بنشر

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

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

قام بنشر

دعنا نتبع طريقة الاستاذ جعفر .. وحقيقة  هي الطريقة النظامية التي  تحترم خصوصية العميل 

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

وتتم من خلال أضافة موقع قاعدة البيانات ( المجلد ) إلى المواقع الموثوقة. وجعله مجلدا موثوقًا وبما في داخله من ملفات اكسس.
يتم ذلك يدويا في مركز التوثيق ضمن خيارات اكسس .

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

لاحظ ان موقع البرنامج سيكون ثابت في مكان محدد .. ولو تم تغيير الموقع مستقبلا فستعود الحماية 

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

في المرفقات ملف ريجستري يقوم  باعطاء الثقة لمجلد محدد .. 

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

غير الامتداد الى txt  وافتح الملف وغير اسم المجلد وموقعه حسب ما لديك .. واحفظ واغلق ثم اعد تسمية الامتداد

انتبه لرقم اصدار اكسس .. فالموجود في الملف 14 لأكسس 10

شغل الملف

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

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

9 ساعات مضت, abofayez1 said:

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

نعم يمكن .. انا استخدم ملفات باتش bat.  يتم تشغيلها اثناء او بالاصح في نهاية عملية التنصيب ,, واستخدمها لاغراض اخرى وليست للأمان وانما استخدم ملفات exe لخفض الأمان

لم اجرب reg  فلعلك تجرب وتخبرنا بالنتيجة ( يمكنك كتابة الاسطر داخل برنامج التحزيم .. ان كان يدعم ذلك )

AccessTrusted.rar

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