س: هل يمكن كتابة كود لإيقاف عمل الأزرار 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("") قد لا يعيد تفعيل مدير
مهام الويندوز مباشرة، وفي هذه الحالة يجب إعادة تشغيل الجهاز لرؤية تأثيرها.
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.