هل من الممكن سرد الأحداث المسماة في نظام التشغيل Windows؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

هل هناك طريقة للحصول على قائمة أسماء الأحداث في النظام؟

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


أخشى أنني لا أستطيع حتى التفكير في ZwOpenDirectoryObject، لأنه تم وصفه بأنه يحتاج إلى نظام التشغيل Windows XP أو أعلى، لذا فهو غير وارد.شكرا لهذا الاقتراح بالرغم من ذلك.

أنا غير متأكد قليلاً بشأن الذاكرة المشتركة، لأنني لم أجرّبها حتى الآن.ربما أقوم ببعض القراءة في هذا المجال على ما أعتقد.تعتبر ملفات التكوين والتسجيل مشكلة بسيطة، لأنها تميل إلى الفشل مع نظام التشغيل Vista بسبب مشاكل الوصول.أنا خائف بعض الشيء من أن الذاكرة المشتركة ستواجه نفس المشكلة.

تبدو فكرة ProcessExplorer واعدة.هل يعرف أحد واجهة برمجة التطبيقات (API) التي يمكن استخدامها لإدراج الأحداث الخاصة بعملية ما؟وهل يعمل بدون حقوق إدارية؟


شكرا على التوضيح.

ليس هناك حقا عملية رئيسية.إنه أكثر من برنامج تشغيل dll يتم استخدامه من عمليات مختلفة وسيتم استخدام الأحداث "لتأمين" الموارد التي تستخدمها هذه العمليات.

أفكر في إنشاء خدمة مركزية تتمتع بحقوق وصول كافية حتى في نظام التشغيل Vista.من المؤكد أن ذلك سيعقد الأمور، لكنه قد يكون الشيء الوحيد المتبقي الذي يواجه المشاكل الأمنية.

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

المحلول

لا تخلط بين وضع المستخدم ZwOpenDirectoryObject ووضع kernel ZwOpenDirectoryObject - واجهة برمجة تطبيقات وضع kernel (http://msdn.microsoft.com/en-us/library/ms800966.aspx) يبدو أنه متاح بالفعل اعتبارًا من نظام التشغيل XP فقط، ولكن يجب أن يكون إصدار وضع المستخدم متاحًا على الأقل منذ NT 4.على أية حال، لا أوصي باستخدام ZwOpenDirectoryObject.

لماذا يجب أن تفشل ملفات التكوين ومفاتيح التسجيل في نظام التشغيل Vista؟بالطبع، يجب عليك ضبط إعدادات الأمان بشكل صحيح - ولكن سيتعين عليك القيام بذلك للأحداث المسماة أيضًا - لذلك لا ينبغي أن يكون هناك فرق كبير هنا.ربما ينبغي عليك إخبارنا ببعض التفاصيل الإضافية حول طبيعة عملياتك - هل يتم تشغيلها جميعًا في نفس جلسة تسجيل الدخول أم أنها تعمل كمستخدمين مختلفين حتى؟وهل هناك عملية رئيسية أو من يصنع الأحداث في المقام الأول؟

بصراحة، أميل إلى أن أجد فكرة Process Explorer ليست فكرة جيدة جدًا.على الرغم من أنك لن تتمكن على الأرجح من تحقيق ذلك دون استخدام واجهات برمجة التطبيقات غير الموثقة و/أو برنامج تشغيل الجهاز، إلا أنني لا أعتقد أنه ينبغي إجراء عملية ما في جدول المقابض لعملية أخرى فقط لمعرفة أسماء بعض العمليات كائنات النواة.وبطبيعة الحال، تنطبق نفس القضايا الأمنية مرة أخرى.

نصائح أخرى

لا، ليس هناك أي وسيلة لتعداد الأحداث المسماة.يمكنك تعداد كافة الكائنات في دليل إدارة الكائنات المعني باستخدام ZwOpenDirectoryObject ثم تصفية الأحداث.ولكن هذا الروتين غير موثق، وبالتالي لا ينبغي استخدامه دون سبب وجيه.

لماذا لا تستخدم آلية منفصلة لمشاركة أسماء الأحداث؟يمكنك إدراجها في ملف تكوين أو مفتاح تسجيل أو ربما حتى في الذاكرة المشتركة.

عملية المستكشف قادر على تعداد جميع الأحداث المسماة التي عقدتها بعض العمليات المحددة.يمكنك الاطلاع على قائمة العمليات بأكملها والقيام بشيء مماثل على الرغم من أن لدي الآن فكرة عن واجهة برمجة التطبيقات (API) المستخدمة للحصول على القائمة...

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