سؤال

هل من الممكن إطلاق متصفح ويب من خدمة Windows؟ لقد قمت بإنشاء خدمة أساسية في C# وقمت بتثبيتها ضمن ملف تعريف الأمان "LocalSystem".

يبدو رمز الخدمة على النحو التالي:

namespace Bootloader
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            string target = "http://www.microsoft.com";
            System.Diagnostics.Process.Start(target);
        }

        protected override void OnStop()
        {
        }
    }
}

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

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

المحلول

من الممكن فقط في XP وأقل. في Vista ، تعمل Windows Services على سطح مكتب منفصل تمامًا. يجب أن يكون لديك شيء يعمل في سطح مكتب المستخدم لإنجاز هذا.

اكتب تطبيقًا مع نافذة مخفية تبدأ عند بدء التشغيل كحل بديل.

نصائح أخرى

لا أعتقد أن هذا ممكن. أعلم أنه إذا كنت ترغب في تشغيل Watin (لا يمكن تشغيل الاختبارات الوظيفية التي يتم تشغيلها في مثيل المتصفح) من بيئة CI الخاصة بي ، إذا كان هذا يعمل كخدمة ، ولكن فقط إذا تم تشغيله كتطبيق.

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

يتمثل الحل البديل في تشغيل خدمتك كخدمة تفاعلية ، ولكن يتم إهمالها ولن تعمل في إصدارات أحدث من Windows.

يتم منع الخدمات صراحة من التفاعل مع المستخدم. منذ أن تم تطبيق هذا فيستا ، انظر الخدمات التفاعلية:

الأهمية لا يمكن للخدمات التفاعل مباشرة مع المستخدم كما هو الحال في Windows Vista. لذلك ، لا ينبغي استخدام التقنيات المذكورة في القسم المعنون باستخدام خدمة تفاعلية في التعليمات البرمجية الجديدة.

يتمثل الحل في فصل الجزء inteactive إلى عملية عادية يتم إطلاقها عند بدء جلسة المستخدم (أي برنامج بدء تشغيل). يمكن لهذه العملية بعد ذلك التواصل مع الخدمة عبر IPC المفضل الخاص بها (Memeory المشترك ، الأنابيب الصافية ، TCP إلخ). يمكن للخدمة توجيه هذه العملية لبدء البرامج عند الحاجة.

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