سؤال

لدي بعض البرامج النصية التي أود تشغيلها في كل مرة يقوم فيها المستخدم بتسجيل الخروج. أرغب في إنشاء شيء يقوم بتعيين البرامج النصية للتسجيل البرمجية بشكل برمجي. على سبيل المثال ، exe أو ملف CMD يمكن تنفيذه لإضافة البرنامج النصي logoff إلى قائمة البرامج النصية Logoff التي تنفذها Windows. ولهذا السبب ، سيكون من الأفضل لوظيفة Windows API أو أمر Windows Shell ، لكن لا يمكنني العثور على مثل هذه الوظائف أو الأوامر للمساعدة في ذلك.

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

لقد جربت مجموعات فرعية من التغييرات التي يقوم بها GediT على أمل أن لا يزال القيام بذلك ينجح. على سبيل المثال ، قمت بتصدير التغييرات التي أجريتها إلى HKCU Software Policies Microsoft Windows System Scripts Logoff واستيرادها على جهاز كمبيوتر آخر ، لكن ذلك لم ينجح ، ولم يكن Gedit MMC غير مدرك حتى أنني صنعت يتغيرون.

كما قلت ، ستكون هناك مجموعة من وظائف Windows API أو أمر Windows Shell هو الأفضل إذا كان أي شخص يعلم بعضًا قد يساعد ، ولكن إذا كان أي شخص يعرف طريقة لفك تشفير كومة من المعلومات التي يقوم بها Gedit بطريقة يمكن أن أسخر منها إذن أنا لست ضد إجراء تغييرات في السجل طالما أنها مستقرة.

مهما كان الحل الذي أجده واستخدامه ، يجب أن يكون قادرًا على أن يكون تلقائيًا وموثوقًا به ، حيث سيتم تنفيذه عن بُعد ضد العديد من أجهزة الكمبيوتر باستخدام PSEXEC ، وسيتم تضمينه أيضًا في عمليات الإعداد الآلية لأجهزة الكمبيوتر المستقبلية التي يتم إعدادها.

لسوء الحظ ، يبدو أن هذا موضوعًا صعبًا لـ Google ، حيث أن العديد من الأشياء الأخرى التي يحاول الناس الحصول عليها لديها العديد من الكلمات الرئيسية التي أستفسر عنها ولكنها ليست في الواقع نفس الموضوع. على سبيل المثال ، Hooks Autdown/Logoff لتشغيل التطبيقات ، أو تسجيل المستخدمين عن بُعد.

إذا كان أي شخص عبارة عن سجل Windows أو معالج MMC ويعتقد أن رؤية تفريغ من السجل تتغير التي يقوم بها GediT MMC عندما يكون القيام بنفس الشيء مفيدًا ، فستقول ذلك فقط ، وسأوفر ذلك منذ أن استولت عليه بالفعل هو - هي. أشك في أن هذا هو الطريق للذهاب ، لكنني بدأت في النظر في كيفية إنشاء أدوات MMC Snap-in ؛ أفكر هو أنه ربما يمكن تصميم Gedit Snap-in نفسه حتى أتمكن من رؤية ما تفعله بالضبط بطريقة بسيطة. هذا لا يسير في أي مكان بسرعة ، حيث لا يبدو أن أي من ملفات .Adm التي أراها لديها إعدادات لهذا الغرض ، ولا يبدو أن ملف gpedit.msc لديه أي شيء من شأنه أن يمنحه في جزء النص العادي ، على الرغم من وجوده هو قسم فيه يبدو أنه رطالب ، لذلك ربما يكون هناك نوع من السحر يحدث هناك.

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

المحلول

يمكن لجدولة المهام القيام بذلك اعتبارًا من Windows Vista. بالنسبة لنظام التشغيل Windows XP وما السابق ، لا يبدو أن هناك إجابة جيدة. لا يحتوي XP على مشغل "ON Disconnect of a User Session" المدرج أدناه.

هناك نوعان من الأدوات المساعدة لسطر الأوامر لجدولة جدولة في Windows: AT.exe و Schtasks.exe. في حد ذاتها ، لا يبدو أنه لا يوفر جميع الخيارات التي يمكنك الحصول عليها من واجهة واجهة المستخدم الرسومية (على الرغم من أن Schtasks تقترب جدًا). ومع ذلك ، يحتوي جدولة المهام على تنسيق XML الذي يصف المهام المجدولة ، ولديه schtasks.exe خيار لاستيراد المهام من ملف XML.

لإنشاء برنامج نصي تسجيل الدخول ، قم بإنشاء ملف XML يصف المهمة التي تريد إنشاؤها. تأكد من استخدام مشغل "On Disconnect من جلسة المستخدم" وحدد السجل من "أي مستخدم" (والذي يتطلب امتيازات مرتفعة) و "اتصال من الكمبيوتر المحلي". قم بإعداد جميع إجراءات التسجيل المطلوبة (مثل البرامج النصية Logoff الخاصة بك) كإجراءات مهمة.

لدى Microsoft قائمة بالأمثلة لتطوير المهام لجدولة المهام ، بما في ذلك أمثلة XML. يمكنك العثور على هذه القائمة هنا.

بدلاً من ذلك ، يمكنك إعداد مهمتك بمجرد استخدام أداة واجهة المستخدم الرسومية ، ثم يمكنك النقر بزر الماوس الأيمن على المهمة التي تظهر فيها في قائمة المهام وتحديد "تصدير". ستحصل على مربع حوار حفظ يتيح لك حفظ المهمة بتنسيق XML.

ثم قمت بالاستدعاء بإعداد المهمة مع الأمر التالي:

schtasks /create /tn "Task Name Here" /XML "path to xml file here" /ru domain\username /rp "password"

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

نصائح أخرى

ألا يمكنك فقط استخدام جدولة مهام Windows لإطلاق البرامج النصية؟

يجب أن تسمح لك الإصدارات الأحدث من جدولة المهام (مثل Windows Server 2008 ، Windows Vista/7) بخيار تشغيل البرامج النصية التي يتم تشغيلها عند إيقاف تشغيل المستخدم.

نرى هنا

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

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