المتابعون للمدونة

الجمعة، 4 يناير 2013

هل يمكن كتابة كود لإيقاف عمل الأزرار Ctrl+Alt+Delete؟


س: هل يمكن كتابة كود لإيقاف عمل الأزرار Ctrl+Alt+Delete؟

 

ج: يستقبل الويندوز أزرار Alt+Ctrl+Delete أولا وينفذ وظيفتها قبل أن يرسل رسائل الويندوز إلى أي برنامج.. لهذا من المستحيل منع هذه الوظيفة بالطرق البرمجية المألوفة.. الحل الوحيد هو تعطيل مدير مهام الويندوز Task Manager نفسه، بحيث لا تستطيع هذه الأزرار تشغيله.. يمكن فعل هذا من خلال مسجل قيم الويندوز Registry، باستخدام هذه الدالة:

' استخدم جملة التضمين التالية أعلى صفحة الكود

Imports Microsoft.Win32

 

Sub SetTaskManagerState(keyValue As String)

        Dim regkey As RegistryKey

        Dim subKey As String = "Software\Microsoft\Windows\CurrentVersion\Policies\System"

        Try

            regkey = Registry.CurrentUser.CreateSubKey(subKey)

            regkey.SetValue("DisableTaskMgr", keyValue)

            regkey.Close()

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try

End Sub 

ولاستخدام هذه الدالة، أرسل إليها النص "1" إذا أردت تعطيل مدير المهام، وأرسل إليها نصا فارغا "" إذا أردت إعادة تشغيله.. ولاختبار هذا، يمكنك وضع مربع اختيار CheckBox على النموذج وتسميته ChkDisableTaskManager، وكتابة الكود التالي في الحدث CheckedChanged الخاص به:

If ChkDisableTaskManager.Checked Then

    SetTaskManagerState("1") ' Disabled

Else

    SetTaskManagerState("") ' Enabled

End If

 

ملاحظات:

1- هذه الطريقة تفترض أن ضغط الأزرار Alt+Ctrl+Delete يؤدي إلى تشغيل مدير المهام مباشرة.. لكن في بعض أنظمة الحالات (تبعا لنظام التشغيل أو إعدادات المستخدم) يؤدي ضغط هذه الأزرار إلى وضع الجهاز في حالة تعليق العمل Lock، وأحيانا يؤدي ضغطها إلى ظهور نافذة اختيار تسأل المستخدم ما الذي يريد فعله، ومن بينها عرض مدير مهام الويندوز.

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

وقد جربت استخدام طريقة تصيد لوحة المفاتيح Keyboard Hooking، ولكنها أيضا لا تفيد مع الأزرار Alt+Ctrl+Delete.

2- بسبب نظام الحماية الخاص ببعض أنظمة الويندوز مثل ويندوز 7، لن يستطيع البرنامج تغيير قيم مسجل قيم الويندوز، وستظهر رسالة تخبرك أنك لا نملك هذه الصلاحية.. لحل هذه المشكلة، يجب عليك تشغيل البرنامج من حساب مدير النظام Admin، وليس هذا فحسب، بل يجب أن تخبر الويندوز حصريا أنك تريد تشغيل هذا البرنامج كمدير، وذلك بضغط البرنامج بزر الفأرة الأيمن واختيار Run As Administrator.

3- استدعاء الوسيلة SetTaskManagerState("") قد لا يعيد تفعيل مدير مهام الويندوز مباشرة، وفي هذه الحالة يجب إعادة تشغيل الجهاز لرؤية تأثيرها.

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر