التكنولوجيا لمنع تسجيلات تسجيلات متعددة لنفس الكمبيوتر

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

  •  19-09-2019
  •  | 
  •  

سؤال

أعيد طرح هذا السؤال هنا لأن الأشخاص في ServerFault تعتبر هذا هو المكان المناسب لسؤال هذا.

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

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

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

هل هناك على أي حال يمكنني القيام به في طلبي لهذا؟ أو هو تسجيل الدخول المتعدد في وقت واحد ببساطة غير ممكن؟

أفضل حل غير دونجل. يعمل طلبي على Windows فقط.

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

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

المحلول

اسمحوا لي أن أوضح وجهة نظري قليلا. على الأقل حريري ويبدو أنه يفسر هذا بطريقة مختلفة.

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

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

انظر أيضا هذا Petve Peeve Peeve. وبعد منع العديد من المستخدمين من استخدام نفس الجهاز يقع في نفس الفئة؛)

بالنسبة لمشكلة الإصدار المتعددة الخاصة بك: اختر اسما فريدا ل Mutex على مستوى النظام الخاص بك لكل (الرئيسية؟) من التطبيق الخاص بك.

المثال الأساسي مع Mutex على مستوى النظام:

static class Program
{
    private static Mutex appMutex = new Mutex(false, "Global\\MyApp 1.0");

    [STAThread]
    static void Main()
    {
        if (!appMutex.WaitOne(0))
        {
            MessageBox.Show("Application is already running. Have a nice day.");
            return;
        }

        // ...
    }
}

ال Global\ بادئة تجعل Mutex شاركت على جلسات خادم محطة متعددة. بدونها، لن يمنع المستخدم فقط من تشغيل مثيلتين في نفس الجلسة.

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

نصائح أخرى

هل تريد منعها من ادارة مرتين على نفس الكمبيوتر؟

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

أو هل تريد إيقاف حسابي بطريقة ما، بخلاف تلك التي قمت بتثبيتها، تشغيلها؟

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