طريقة إيقاف خدمة Windows عند ضبط CanStop على False (C#)

StackOverflow https://stackoverflow.com/questions/149632

  •  02-07-2019
  •  | 
  •  

سؤال

طيب الجزء الثاني من ليس لدي أي تجربة قوة الإرادة يكون:

سؤال ملخص -هل هناك طريقة لتعيين خاصية CanStop على خدمة Windows ديناميكيًا؟

Spinle Spiel - لدي خدمة تقوم حاليًا بفحص عمليات القتل والقتل (أي ألعاب) أخبرتها إذا كان اليوم غير مسموح به.عظيم.لقد قمت بتعيين CanStop على false حتى لا أتمكن من إيقاف الخدمة إذا استسلمت للإدمان.لدي برنامج يقوم بالتحقق من كلمة المرور (يقوم شخص آخر بإدخال كلمة المرور) والذي سيوقف الخدمة إذا كانت كلمة المرور صحيحة.(إذا كان لدي عمليات سحب جادة) المشكلة تكمن في استخدام فئة ServiceController.

بقدر ما أستطيع أن أقول، ServiceController هو مجرد مصمم ديكور (نعم، أعتقد أن نمط التصميم) ولذا ليس لدي طريقة للحصول على الخدمة الفعلية التي يمثلها.كانت المحاولة الأولى هي معلومات الملكية، لكنني كنت غبيًا جدًا لدرجة أنني لم أدرك أن ذلك سيكون بلا جدوى.الثاني هو "المعلومات الميدانية" لأنني اعتقدت أنه قد يكون هناك حقل خاص "يمثل" الخدمة.وكما قد تتخيل، فقد فشل كلاهما.

أيه أفكار؟

تحرير 1أرغب في تجنب الحصول على قيمة CanStop في مكان ما يمكنني الوصول إليه بسهولة مثل ملف التكوين أو التسجيل.لذا فإنني أحاول، ولكن ليس بنجاح، معالجة هذا الأمر بالكامل في البرنامج.

المحاولات الجديدة (الفاشلة):

خدمة إدارة الكائن؛ManagementBaseObject stopService;

Service = New ManagementObject ("Win32_service.name = 'stopProgram'") ؛

stopService = service .invokemethod ("stopService" ، null ، null) ؛

لست متأكدا من أن هذا لم يفعل أي شيء.أفترض أنه لا يمكن أن يتوقف بسبب وضع CanStop.

هل كانت مفيدة؟

المحلول

تعد "CanStop" إحدى سمات تسجيل الخدمات في مدير التحكم في خدمة Windows.لا يمكنك تغييره في منتصف الخطوة.

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

إذا كنت تريد السماح لشيء ما بالمرور، فاستخدم حدثًا عالميًا لتمكين/تعطيل التحقق من الخدمة - أو فقط قم بإزالة الألعاب من جهاز الكمبيوتر!:-)

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top