কোনও গেম কীভাবে লোককে নিজেরাই একাধিক বার চালাতে বাধা দিতে পারে?


15

স্টারক্রাফ্ট II আমাকে একাধিক ইনস্ট্যান্স চালানো থেকে বিরত রাখে , তবে আমি যদি স্যান্ডবক্সিতে দ্বিতীয় বার স্যান্ডবক্সযুক্ত চালনা করি তবে এটি কার্যকর হয়। এর জন্য কী হতে পারে?

আমি কীভাবে নিজের গেমগুলির জন্য এই আচরণটির প্রতিলিপি করতে পারি?

উত্তর:


15

স্টারক্রাফ্ট 2 বাদে, এর সাধারণ উত্তরটি হ'ল: অর্জন (এবং লক করুন, যদি অধিগ্রহণটি ইতিমধ্যে লকিংয়ের সমতুল্য না হয়) অপারেটিং সিস্টেম থেকে একটি নির্দিষ্ট উত্স। অধিগ্রহণ / লকিং ব্যর্থ হলে গেমটি থেকে প্রস্থান করুন। এই জাতীয় সংস্থার উদাহরণ হ'ল:

  1. নির্দিষ্ট টিসিপি বা ইউডিপি পোর্ট।
  2. পারস্পরিক একচেটিয়া লকগুলি ("মিটেক্সেস") বা সেমোফোরাস (এই দুটি সাধারণত ওএস স্তরের সাথে সম্পর্কিত হয়)
  3. ফাইল (লগ ফাইলগুলি প্রায়শই সর্বাধিক সুস্পষ্ট পছন্দ)

উপরের প্রান্তে, গ্রাহক উপায়ে বেশিরভাগ ব্যথা-অন-গাধা, বিশেষায়িত হার্ডওয়্যার যা (কখনও কখনও অগত্যা কিছু রোবোটিক নিয়ন্ত্রণের উপাদানগুলির মতো হয়) কেবলমাত্র একক থ্রেডের দ্বারা কেবল এইভাবে ব্যবহার করা যেতে পারে।


5
এছাড়াও সম্ভাব্য সুরক্ষা জটিলতাগুলি মাথায় রাখার জন্য এটি কার্যকর হতে পারে: " একক-উদাহরণস্বরূপ প্রোগ্রামটি এটি নিজের পরিষেবার অস্বীকার "।
এনাফটাইয়া

যেহেতু এটি স্যান্ডবক্সিতে কাজ করে, সম্ভবত এটি প্রথম নয়। 2 বা 3 ভাল সম্ভাবনা, কী কী ফাইলগুলি তাদের প্রক্রিয়াগুলির জন্য খোলা রয়েছে তা একবার দেখে নেওয়া সম্ভবত এটি চিহ্নিত করবে।
ডগ- W

3
@ ডগ-ডাব্লু আমি দেখতে পাচ্ছি না যে এটি কীভাবে স্যান্ডবক্সিতে কাজ করছে # 1 এর বাইরে।
অ্যাটাকিংহোব

@ অ্যাটাকিংহোব যদি আমি স্যান্ডবক্সির জটিলতা বুঝতে না পারি, তবে যে বন্দরটি স্যান্ডবক্সির বাইরে আবদ্ধ থাকে তা কী আবদ্ধ হতে বাধা দেয় না? অথবা স্যান্ডবক্সি এর ভিতরে চলমান প্রতিটি প্রোগ্রামের জন্য ভার্চুয়াল ইন্টারফেস সরবরাহ করে?
ডগ-ডাব্লু

@ ভিগিল যতদূর আমি উদ্বিগ্ন, আপনি সারা দিন রেমন্ড চেনকে উদ্ধৃতি দিতে পারেন, তবে দয়া করে তাঁর উদ্ধৃতিগুলিতে ব্যাকরণগত ত্রুটিগুলি যুক্ত করবেন না। : পি (পরিবর্তে কেবল সেগুলি অনুলিপি করুন / আটকান))
hheimbuerger

4

আমি মিটেক্স পদ্ধতির প্রস্তাব দিই, তবে:

প্রায়শই ব্যবহৃত হয় এমন অন্য পদ্ধতিটি হ'ল একই নামের অন্য কোনও প্রক্রিয়া চলমান কিনা তা খতিয়ে দেখা হচ্ছে।

সুবিধাটি হ'ল এটি হাস্যকরভাবে সহজ - আপনাকে ফাইলের অনুমতি সম্পর্কে চিন্তা করতে হবে না বা মিউটেক্স কী তা জানার দরকার নেই। ক্ষতিটি হ'ল, যদি মেশিনে কোনও ভিন্ন প্রোগ্রাম বলা starcraft2.exeহয় তবে আপনি একটি মিথ্যা-পজিটিভ পাবেন ।


2
হেই, বা ব্যবহারকারী প্রোগ্রামটির নতুন নামকরণের সিদ্ধান্ত নিলে।
ব্র্যান্ডন

@ জোনাথন: তাহলে এক্সিকিউটেবল নামটি হার্ডকোড করবেন না ...
ব্লুরাজা - ড্যানি ফ্লুঘুফুট

1
আমি আরও পছন্দ করছিলাম, যদি ব্যবহারকারী প্রোগ্রামটি অনুলিপি করে এবং এর নাম পরিবর্তন করে এবং এটি দুবার চালায় তবে কী হবে?
ব্র্যান্ডন

3

আপনি যদি সি ++ এবং উইন্ডোজ এপিআই ব্যবহার করে থাকেন তবে আপনি যা করতে পারেন তার একটি উপায় হ'ল FindWindowআপনি ক্লাসের নাম এবং / অথবা উইন্ডো নামের মতো প্যারামিটারগুলি পাস করতে পারেন। তারপরে যদি আপনি কোনও মিল খুঁজে পান তবে আপনি উইন্ডো লোড বা তৈরি করার আগে কেবল আপনার প্রোগ্রামটি থেকে প্রস্থান করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.