كيفية تشغيل البرنامج قبل الخروج على نظام التشغيل ويندوز XP ؟

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

سؤال

أنا أبحث عن عكسية إصدار "RunOnceEx".

RunOnceEx تشغيل بعض البرامج قبل المستخدم قذيفة(سطح المكتب و شريط المهام) تبدأ.تسجيل الدخول التقدم لن تستمر قبل runonceex كاملة.

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

وأعتقد أنه من الممكن لأن "mobsync.exe" هو يفعل ذلك.ولكن لا أستطيع أن أجد فيها وكيفية القيام بذلك.

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

المحلول

لتشغيل هذا فقط للمستخدم الحالي، يمكنك استخدام WMI للحصول على المعلومات عند حدوث اغلاق / تسجيل الخروج.

وإما أن تكتب صغير C # (أو أي لغة أخرى يمكن استخدام WMI) تطبيق أو برنامج نصي فبس للاستماع على Win32_ComputerShutdownEvent الحدث WMI.

ومثال C # التطبيق يمكن العثور عليها هنا في هذا السؤال: الحصول على تسجيل الخروج من الحدث نظام

نصائح أخرى

تحذير, كما قال هنا, gpedit.msc سوف تسمح لك لتكوين تسجيل الخروج النصي بالنسبة كل المستخدمين.

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

وجدت في النتيجة الأولى على جوجل بالنسبة لي

لتنفيذ البرنامج يمكنك إنشاء برنامج نصي لتشغيله واستخدام نهج المجموعة لتطبيقه. في محرر نهج المجموعة انتقل إلى تكوين المستخدم -> إعدادات ويندوز -> برامج نصية (تسجيل الدخول / الخروج)

مزيد من المعلومات هنا

إذا كنت ترغب في تشغيل البرنامج إلى تنفيذ التعليمات البرمجية على تسجيل الخروج، ثم عليك أن ربط رسالة WM_QUERYENDSESSION وابحث عن قيمة lParam من (0x80000000) ENDSESSION_LOGOFF.

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

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

إذا كنت في بيئة. NET (لم يتم تحديد)، وهي طريقة أسرع لإضافة معالج الحدث إلى الحدث Microsoft.Win32.SystemEvents.SessionEnding.

ما عليك هو تنفيذ جينا.يمكنك تشغيل أوامر مخصصة في WlxIsLogoffOk الدالة التي يتم استدعاؤها عندما يبدأ المستخدم تسجيل الخروج

بمجرد إنشاء السليم جينا dll يمكنك التسجيل من هنا: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\@GinaDLL

هنا هو التنفيذ التي قد تناسب الاحتياجات الخاصة بك (وهو يوفر تسجيل الخروج مفتاح التسجيل حيث يمكن تحديد الأوامر الخاص بك):http://wwwthep.physik.uni-mainz.de/~frink/newgina_pre09/readme.html

وكما VonC وTFD التي سبق ذكرها، محرر نهج المجموعة هو مجرد وسيلة أخرى لمعالجة التسجيل.

ومجرد جعل مع gpedit التغييرات (في Userconfig - إعدادات ويندوز - مخطوطات) تريد وبعد ذلك نلقي نظرة في التسجيل في [HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts] لمعرفة كيف يمكنك أن تفعل ذلك مباشرة.

وأيضا على جهاز الكمبيوتر (شنقا في مجال) هو C:\WINDOWS\System32\GroupPolicy مجلد مخفي مع المجلدات الفرعية للمستخدم والجهاز. على حد سواء بعد المجلدات الفرعية الإضافية المطلوبة إيقاف وبدء التشغيل. ربما يمكنك أيضا استخدام هذه منها.

إذا كنت بحاجة إلى شيء بسيط و العمل واحد (أو أي) المستخدم يمكنك جعل تطبيق بسيط في C++ أو C# على سبيل المثال.

أبسط هو وجود C# في صينية (ببساطة عن طريق إضافة علبة مكون شكل) و سجل و معالج الحدث عن FormClosing هذا الحدث.انها تبدو مثل هذا:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason != CloseReason.UserClosing)
        {
            // It's not the user closing the application,
            // Let's do whatever you want here, for example starting a process
            Process notePad = new Process();

            notePad.StartInfo.FileName   = "notepad.exe";
            notePad.StartInfo.Arguments = "ProcessStart.cs";

            notePad.Start();
        }
    }

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

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